Home >Web Front-end >JS Tutorial >Window.open() access is denied appears in the script - Access Denied Situation and Analysis_Basic Knowledge

Window.open() access is denied appears in the script - Access Denied Situation and Analysis_Basic Knowledge

WBOY
WBOYOriginal
2016-05-16 19:21:331786browse

Maybe some friends already know about this situation, but I still write down my analysis ideas for other friends’ reference.

Yesterday, I saved the blog page in another place to debug and change the blog skin locally.

Introduction:
I want to use script control to dynamically add the three buttons Run HTML code, CopyCode, and SaveCode to the multi-line text box with the css class name code_textarea when the onload page is loaded. inside.

Status description:
On the non-server side (that is, not debugging under the local server), all the buttons have appeared under the multi-line text box, but when debugging the script (click Run HTML code), " Access denied...Debugging on the server is normal.

Analysis:
Looking at the code, I found that there is an error in the script here. The code is as follows:
function fnRunHtmlCode(obj)
{
//try {
//if (typeof (obj)=="string") obj=document.getElementById(obj);
var wnd = window.open('', "_blank", '');
wnd.document.open('text /html', 'replace');
wnd.document.writeln(obj.value);
wnd.document.close();
//} catch(ex) { alert(ex.message ) };
};
Open with Mozilla, run the regex, and the script has no errors. After working on it for about half an hour, I deleted the rest of the code, copied the dynamically generated div and button codes in Mozilla to check, and copied the buttons dynamically loaded on IE to DW to check. There was no abnormality. Including running the above function on another page, it is still normal, and changing this function to window.open('','','') still access is denied.

Since access is denied, it must be cross-domain under normal circumstances. But for local debugging, no other code is added. How can it be cross-domain? Puzzled.
So I want to put it on the blog first. The strange thing is that it works fine if I put it on the server, so I put the local page on the local server and it works fine. This time it was even more strange. Is it an IE bug? Not true because the server can run. Code problem? This is not true because it works fine on other pages and no other code is involved. It's just a funtion, which means there must be something wrong with the downloaded page. Does the HTML page output by CSDN blog have code similar to document.domain?

Step-by-step debugging successful:
Remove all unnecessary parts of the original code (including Html). The final simplification is as follows:


[Ctrl A Select all Note: If you need to introduce external Js, you need to refresh to execute
]


Operation remains the same.
So remove the DTD.

[Ctrl A select all Note:
If you need to introduce external Js, you need to refresh to execute ]

정상적으로 돌아가네요~~이유는 알겠습니다.

이 문장으로 인해 오랫동안 이유를 찾았습니다. 마침내 파헤쳐본 결과, 이 코드로 저장이 IE 아래 도메인 간 존재한다는 것이 입증되었지만 Mozilla는 이 문장에 대해 아무런 응답도 하지 않았습니다.

후기:


/본문>
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:js skills--the wonderful use of the escape character ""_javascript skillsNext article:js skills--the wonderful use of the escape character ""_javascript skills

Related articles

See more