각 "창" 은 JS 런타임, 즉 JS 런타임입니다. 창이 하나만 있는 경우 런타임이 하나만 있습니다. 을 눌러 섹션을 인쇄할 수도 있습니다 창 아래에 iframe 이 있으면 두 개의 런타임이 있습니다. 을 눌러 섹션을 인쇄할 수도 있습니다 이런 것들이죠.
도메인 간 런타임 간 상호 운용성 (또는 통신) 은 제한적입니다. 즉, 이 창 자체가 a.baidu.com 도메인 이름 아래의 페이지인 경우, 이 페이지 아래에 iframe 이 있으면 이 iframe 에 로드된 페이지는 b.baidu.com 도메인 이름 아래의 페이지입니다. 그래서 밖에 있는 JS 입니다. 이 iframe 의 컨텐츠와 상호 운용하거나 통신할 수 없습니다.
따라서 외부 런타임 시 JS 가 내부 iframe 의 컨텐츠를 조작하려면 도메인 간 제한을 피해야 합니다. 내부 iframe 로드 페이지의 도메인 이름이 외부와 동일할 수도 있습니다. 또는 내부 iframe 로드 페이지에서 document.domain =' Baidu.com' 을 실행해야 합니다. 을 눌러 외부 레이어의 마스터 도메인과 동일하게 설정합니다.
예를 들어, 현재 페이지는 a.baidu.com/test.html.
& lthtml & gt
& lthead & gt
& lt/head & gt;;
& ltbody & gt
& lt iframeid = "ifrm1"src = "0c893329b8c9af6 ff578db9b1a1288 채우기: 0px 색상: RGB (69,69,69); 서체 시리즈: 아리엘, 아리엘, Sans-arial, 타호마,' 마이크로소프트 야블랙'; Font-size:14px; 글꼴 스타일: 보통; 글꼴-변형-대문자: 일반; 글꼴 두께: 보통; 문자 간격: 일반; 고아: 자동차 텍스트 정렬: 시작; 텍스트 들여쓰기: 0px 텍스트 변환: 없음; 공백: 일반; 과부: 차 자간: 0px-WebKit-tap-highlight-color: rgba (26,26,26,0.30196/kloc- -WebKit-text-size-adjust: auto; -WebKit-text-stroke-width: 0px; ">
Iframe 에 로드된 페이지 내용은 다음과 같습니다.
& lthtml & gt
& lthead & gt
& lt/head & gt;;
& ltbody & gt
& ltdiv id = "innerDiv"> 내부 iframe 의 요소 조작을 축하합니다! ! ! & lt/div & gt;;
& lt 스크립트 & gt
Document.domain =' Baidu.com';
& lt/스크립트 >
& lt/body & gt;;
& lt/html & gt;;
HTML5 에 postMessage 용 API 가 추가되었습니다. 창과 내부 iframe 간의 통신을 용이하게 하고 도메인 간 통신을 가능하게 합니다. 하지만 몇 가지 제한 사항이 있습니다. 일반 1 의 오래된 브라우저는 지원하지 않습니다. 2. 상위 창은 iframe 에만 정보를 보낼 수 있고, iframe 은 메시지만 받을 수 있으며, 상위 창은 iframe 의 내용을 직접 조작할 수 없습니다. 3. 상위 창에서 보낸 데이터도 제한적입니다. 기본 데이터 유형이나 일반 객체만 보낼 수 있습니다.