學習中遇到點小問題,這個是在網上找到的,先備忘。
1.父頁面中獲取IFRAME的WINDOW對象
獲得了window對象後,就可以調用iframe頁面中定義的方法等。
IE:可以通過iframeId、windows.iframeId、windows.iframeName、window.frames[iframeId]、window.frames[iframeName]、window.frames[iframeIndex]和iframeElement.contentWindow這6種方法來獲取iframe的window對象。
FF:可以通過windows.iframeName、window.frames[iframeName]和iframeElement.contentWindow這3種方法獲取window對象。
總結:爲了兼容大多數瀏覽器,應使用iframeElement.contentWindow來獲取。見如下代碼:
1
|
var iframe = document.getElementByIdx_x( 'iframe1' ).contentWindow; |
ie6和ie7還可以使用document.frames["iframe Name"]或者document.frames["iframe ID"]來獲取相當於contentWindow屬性,而firefox和chrome並不支持這些document.frames["iframe Name"]或者document.frames["iframe ID"],但是window.frames["iframe Name"]或window.frames[index](index是索引值)也支持所有主流瀏覽器;
2.父頁面中獲取IFRAME的DOCUMENT對象標準瀏覽器:通過iframeElement.contentDocument來引用iframe的doument對象,但是IE瀏覽器不支持,確切說應該是IE 6/7,IE8中可以用此方法來獲取了。
IE:用window.frames[iframeId].document來獲取
因爲document是window的一個子對象,你也可以先獲取iframe的window對象,再通過window.document來引用。
總結:應使用以下兩方法來獲取,見代碼:
1
2
3
4
5
6
7
8
9
10
|
"text/javascript" > //獲取iframe的document對象 //方法1:先獲取window對象再通過window.docuemnt var iframe = document.getElementByIdx_x( 'iframe1' ).contentWindow.document; //方法2:分支判斷 function getIframeDom(iframeId) { return document.getElementByIdx_x(iframeId).contentDocument || window.frames[iframeId].document; } |
parent:父頁面window對象
window.parent
top:頂層頁面window對象
window.top
self:始終指向當前頁面的window對象(與window等價)
如果窗口是頂級窗口,那麼parent==self==top
根據這個可以防止網頁被嵌套:
1
2
3
|
if (window!=window.top){ window.top.location.href=window.location.href: } |
兼容性:適用於所有瀏覽器,當拿到了父頁面的window對象後,就可以訪問父頁面定義的全局變量和函數。
注:chrome要求在服務器環境下進行iframe操作。