이 기사에서는 웹 페이지가 iframe 프레임 워크에 포함되는 것을 방지하기위한 JS 방법에 대해 설명합니다. 다음과 같이 참조에 대해 공유하십시오.
예를 들어:
<script type = "text/javaScript"> if (wind // 그렇지 않은 경우, 웹 페이지에 내장 된 URL로 상단 객체의 URL을 자동으로 지시합니다 </script>
이 코드는 유효합니다. 그러나 문제가 있습니다. 그것을 사용한 후에는 아무도 자신을 포함하여 웹 페이지를 프레임 워크에 포함시킬 수 없습니다.
그래서 오늘 나는 다른 사람들의 프레임 워크가 아니라 내 웹 페이지를 내 자신의 프레임 워크에만 포함시킬 수있는 방법이 있는지 고려하고 있습니까?
표면적 으로이 질문은 매우 간단합니다. 판단 : 현재 프레임 워크의 도메인 이름과 최상위 프레임 워크의 도메인 이름이 동일하고 답변이 아니요 인 경우 URL 리디렉션이 수행됩니다.
if (top.location.hostname! = window.location.hostname) {top.location.href = window.location.href;}그러나 예기치 않게,이 글은 잘못되었으며 전혀 실행할 수 없습니다. 실수가 어디에 있는지 알 수 있습니까?
Top.location.hostname을 www.111.com이고 Window.location.hostname은 www.222.com이라고 가정하십시오. 즉, 111.com은 222.com을 웹 페이지에 포함시킵니다. 현재 top.location.hostname! = window.location.hostname을 비교하면 어떻게됩니까?
브라우저는 코드 오류가 발생합니다!
브라우저의 보안 정책은 크로스 도메인이기 때문에 222.com의 웹 페이지가 111.com의 웹 페이지를 운영 할 수 없으며 그 반대도 마찬가지입니다. 즉,이 오류를 "권한 없음"이라고합니다. 또한 브라우저는 상단을 볼 수 없습니다. location.hostname. 도메인 크로스 케이스의 경우이 객체를 보자 마자 오류를 직접보고합니다.
그렇다면 코드를 어떻게 수정해야합니까?
실제로, 이것은 우리에게 top.location.hostname이 오류로보고되었는지 확인하도록 유도합니다. 오류가보고되면 크로스 도메인이 있고 상단 객체가 리디렉션 될 것임을 나타냅니다. 오류가보고되면 크로스 도메인이 없거나 프레임 워크가 사용되지 않음을 나타냅니다.
{top.location.hostname;} catch (e) {top.location.href = window.location.href;} try이것은 올바르게 작성되며 IE 및 Firefox에서 올바르게 실행할 수 있습니다. 그러나 크롬은 오류가 발생합니다. 어떤 이유로, 크로스 도메인 상황에서 Chrome은 상단에 오류를보고하지 않습니다.
방법은 없습니다. Chrome에 대한 다른 보충 코드 만 추가 할 수 있습니다.
{top.location.hostname을 시도하십시오; if (top.location.hostname! = wind }} catch (e) {top.location.href = window.location.href;}좋아, 업그레이드 된 버전 코드가 완료되었습니다. 로컬 도메인 이름을 제외하고 다른 도메인 이름은 웹 페이지를 프레임 워크에 포함시킬 수 없습니다.
JavaScript 관련 컨텐츠에 대한 자세한 내용은이 사이트의 주제를 확인하십시오. "JavaScript 운영 iframe 기술 요약", "JavaScript Array Operation Skills의 요약", "JavaScript 수학 운영 사용법 요약", "JavaScript 데이터 구조 및 알고리즘 기술의 요약", "Javascript Splegy and Experial의 요약", Javascript Amersing ", Javascript Alority of javascript" "JavaScript 애니메이션 특수 효과 및 기술 요약", "JavaScript 오류 및 디버깅 기술 요약"및 "JavaScript Traversal 알고리즘 및 기술 요약"
이 기사가 모든 사람의 JavaScript 프로그래밍에 도움이되기를 바랍니다.