어쩌면 이미 이런 상황을 알고 있는 친구들도 있겠지만, 나는 다른 친구들이 참고할 수 있도록 분석 아이디어를 적어본다.
어제 블로그 스킨을 로컬에서 디버그하고 변경하기 위해 블로그 페이지를 다른 곳에 저장했습니다.
소개:
스크립트 컨트롤을 사용하여 온로드 페이지가 로드될 때 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 포함)에서 불필요한 부분을 모두 제거합니다. 최종 단순화는 다음과 같습니다.