js iframe 조작 방법 소개

3344 단어 jsiframe
1.iframe 을 얻 은 window 대상 은 도 메 인 접근 제한 이 있 습 니 다.
chrome:iframeElement. contentWindowfirefox: iframeElement.contentWindowie6:iframeElement.contentWindow
글 Iframes,onload,and document.domain 에 서 는"he iframe element object has a property called contentDocument that contains the iframe's document object,so you can use the parentWindow property to retrieve the window object"라 고 말 했다.일부 브 라 우 저 는 iframeElement.contentDocument.parentWindow 를 통 해 iframe 의 window 대상 을 얻 을 수 있다 는 뜻 이다.그러나 테스트 를 통 해 fireforx,chrome 의 element.contentDocument 대상 은 parentWindow 속성 이 없습니다.
(javascript)

function getIframeWindow(element){        
    return  element.contentWindow;  
    //return  element.contentWindow || element.contentDocument.parentWindow;  

2.iframe 을 얻 은 document 대상 은 도 메 인 접근 제한 이 있 습 니 다.
chrome:iframeElement.contentDocument firefox:iframeElement.contentDocumentie:element.contentWindow.document 비고:ie 에는 iframeElement.contentDocument 속성 이 없습니다.
(javascript)

var getIframeDocument = function(element) {  
    return  element.contentDocument || element.contentWindow.document;  
};  
3.iframe 에서 부모 페이지 를 얻 은 window 대상 은 도 메 인 접근 제한 이 있 습 니 다.
부모 페이지:window.parent 최상 위 페이지:window.top 은 모든 브 라 우 저 에 적 용 됩 니 다.
4.iframe 이 부모 페이지 에 있 는 html 탭 을 얻 으 면 도 메 인 접근 제한 이 있 습 니 다.
window.frameElement(형식:HTML Element),모든 브 라 우 저 에 적용
5.iframe 의 onload 이벤트 비 ie 브 라 우 저 는 모두 onload 이 벤트 를 제공 합 니 다.예 를 들 어 아래 코드 는 ie 에서 팝 업 상자 가 없 을 것 입 니 다.
(javascript)

var ifr = document.createElement('iframe');  
ifr.src = 'https://www.jb51.net/index.php';  
ifr.onload = function() {  
    alert('loaded');  
};  
document.body.appendChild(ifr);  
그러나 ie 는 onload 사건 을 제공 한 것 같 습 니 다.다음 두 가지 방법 은 모두 onload 를 촉발 합 니 다.
방법 1:

<iframe  onload="alert('loaded');"  src="https://www.jb51.net/index.php"></iframe>  
 
  방법 2:   //ie 만 이 createElement 에 이러한 매개 변 수 를 전달 하 는 것 을 지원 합 니 다

var ifr = document.createElement('<iframe  onload="alert('loaded');" src="https://www.jb51.net/index.php"></iframe>');  
document.body.appendChild(ifr);  
iframe 요소 가 부모 페이지 에 포함 되 어 있 기 때문에 상기 방법 은 도 메 인 문 제 를 해결 하지 않 습 니 다.
실제로 IE 는 onload 이 벤트 를 제공 하지만,attachEvent 를 사용 하여 연결 해 야 합 니 다.
 
var ifr = document.createElement('iframe');  
ifr.src = 'http://b.jb51.net/b.php';  
if (ifr.attachEvent) {  
    ifr.attachEvent('onload',  function(){ alert('loaded'); });  
} else {  
    ifr.onload  = function() { alert('loaded'); };  
}  
document.body.appendChild(ifr);  
6.frameswindow.frames 는 페이지 의 프레임(iframe,frame 등)을 가 져 올 수 있 습 니 다.주의해 야 할 것 은 window 대상 이지 HTML Element 가 아 닙 니 다.

var ifr1 = document.getElementById('ifr1');  
var ifr1win = window.frames[0];  
ifr1win.frameElement === ifr1;   // true  
ifr1win === ifr1;    // false  

좋은 웹페이지 즐겨찾기