javascript iframe関連操作

2228 ワード

1.iframeのwindowオブジェクトを獲得する
iframeElement.co ntwindow
2.iframeのdocumentオブジェクトを獲得する
クロスドメインアクセス制限があります.
chrome:iframeElement.co nt Dockment firefox:iframeElement.co nt Dcument ie:element.com ntwindow.document備考:ieはiframeElement.com属性を持っていません.
var getIframeDocument = function(element) {  

    return  element.contentDocument || element.contentWindow.document;  

};  

3.iframeで親ページのwindowオブジェクトを獲得する
クロスドメインアクセス制限があります.
父ページ:window.parentトップページ:window.topはすべてのブラウザに適用されます.
4.iframeの親ページのhtmlタグを取得する
クロスドメインアクセス制限があります.
window.frame Element(タイプ:HTMlement)は、すべてのブラウザに適用されます.
5.iframeのonloadイベント
いいえ、ieブラウザは全部オンラインイベントを提供しました.例えば、以下のコードは、ieにおいて、ポップアップボックスがない.
var ifr = document.createElement('iframe');  

ifr.src = 'http://www.b.com/index.php';  

ifr.onload = function() {  

    alert('loaded');  

};  

document.body.appendChild(ifr);   

しかし、ieはまたonloadイベントを提供しているようです.次の二つの方法はonloadを触発します.
   :  

<iframe onload="alert('loaded');" src="http://www.b.com/index.php"></iframe>  



   :  

//  ie    createElement         

var ifr = document.createElement('<iframe onload="alert('loaded');" src="http://www.b.com/index.php"></iframe>');  

document.body.appendChild(ifr);   

iframe要素は親ページに含まれているので、上記の方法はドメインをまたぐ問題がありません.
実際にIEはonloadイベントを提供しているが、atachEventを使用してバインディングしなければならない.
ar ifr = document.createElement('iframe');  

ifr.src = 'http://b.a.com/b.php';  

if (ifr.attachEvent) {  

    ifr.attachEvent('onload',  function(){ alert('loaded'); });  

} else {  

    ifr.onload  = function() { alert('loaded'); };  

}  

document.body.appendChild(ifr);  

6.frames
window.frameはページの中のフレーム(frame、frameなど)を取ることができます.注意すべきのはwindowオブジェクトであり、HTMlementではありません.
var ifr1 = document.getElementById('ifr1');  

var ifr1win = window.frames[0];  

ifr1win.frameElement === ifr1;   // true  

ifr1win === ifr1;    // false  

7.document.domainを定義する
この声明はドメイン名の違いを消しました.同じドメイン名のサイトを二つ処理するようにこの二つのページを処理できます.