>웹 프론트엔드 >JS 튜토리얼 >Window.open() 접근이 거부되었습니다. 스크립트에 나타납니다. - 접근 거부 상황 및 분석_기본 지식

Window.open() 접근이 거부되었습니다. 스크립트에 나타납니다. - 접근 거부 상황 및 분석_기본 지식

WBOY
WBOY원래의
2016-05-16 19:21:331787검색

어쩌면 이미 이런 상황을 알고 있는 친구들도 있겠지만, 나는 다른 친구들이 참고할 수 있도록 분석 아이디어를 적어본다.

어제 블로그 스킨을 로컬에서 디버그하고 변경하기 위해 블로그 페이지를 다른 곳에 저장했습니다.

소개:
스크립트 컨트롤을 사용하여 온로드 페이지가 로드될 때 CSS 클래스 이름 code_textarea가 있는 여러 줄 텍스트 상자에 Run HTML code, CopyCode 및 SaveCode 버튼 3개를 동적으로 추가하고 싶습니다. . 내부에.

상태 설명:
비서버 측(즉, 로컬 서버에서 디버깅하지 않는 경우)에서는 여러 줄 텍스트 상자 아래에 모든 버튼이 표시되었지만 스크립트를 디버깅할 때(클릭 HTML 코드 실행), "접근이 거부되었습니다...서버에서 디버깅하는 것은 정상입니다.

분석:
코드를 살펴보니 여기 스크립트에 오류가 있는 것을 발견했습니다. 코드는 다음과 같습니다.
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 ) };
};
Mozilla로 열고 정규식을 실행하면 스크립트에 오류가 없습니다. 30분 정도 작업한 후 나머지 코드를 삭제하고, Mozilla에서 동적으로 생성된 div와 버튼 코드를 복사하여 확인하였고, IE에서 동적으로 로딩된 버튼을 DW로 복사하여 확인해 보니 이상이 없었습니다. 위 함수를 다른 페이지에서 실행하는 것을 포함하면 여전히 정상이며, 이 함수를 window.open('','','') 로 변경해도 여전히 접근이 거부됩니다.

접근이 거부되므로 일반적인 상황에서는 크로스 도메인이어야 하는데, 로컬 디버깅의 경우 다른 코드가 추가되지 않습니다. 어떻게 크로스 도메인이 될 수 있습니까? 어찌할 바를 모르는.
그래서 블로그에 먼저 올려볼까 합니다. 이상한 점은 서버에 올려놓으면 잘 되니까 로컬 서버에 로컬페이지를 올려두니 잘 되더군요. 이번에는 더욱 이상했습니다. IE 버그인가요? 서버가 실행될 수 있으므로 사실이 아닙니다. 코드 문제? 이는 다른 페이지에서는 잘 작동하고 다른 코드는 포함되지 않기 때문에 사실이 아닙니다. 이는 단지 기능일 뿐이므로 다운로드한 페이지에 문제가 있음을 의미합니다. CSDN 블로그의 HTML 페이지 출력에 document.domain과 유사한 코드가 있습니까?

단계별 디버깅 성공:
원본 코드(Html ​​포함)에서 불필요한 부분을 모두 제거합니다. 최종 단순화는 다음과 같습니다.



[Ctrl A 모두 선택 참고: 외부 J를 도입해야 하는 경우 실행하려면 새로 고쳐야 합니다 ]


운영 방식은 동일합니다.
그러므로 DTD를 제거하세요.


[Ctrl A 모두 선택 참고: 외부 J를 도입해야 하는 경우 실행하려면 새로 고쳐야 합니다
]

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

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

후기:


/본문>
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:js 기술--이스케이프 문자 ""_javascript 기술의 놀라운 사용다음 기사:js 기술--이스케이프 문자 ""_javascript 기술의 놀라운 사용

관련 기사

더보기