獲得iframe的window對象
存在跨域訪問限制
chromeiframeElement contentWindow
firefox iframeElementcontentWindow
ieiframeElementcontentWindow
文章Iframes onload and documentdomain中說“he iframe element object has a property called contentDocument that contains the iframes document object so you can use the parentWindow property to retrieve the window object”意思就是一些浏覽器可以通過iframeElementcontentDocumentparentWindow獲得iframe的 window對象但經過測試firefoxchrome的elementcontentDocument對象沒有parentWindow屬性
(javascript)
復制代碼 代碼如下:
function getIframeWindow(element){
return element
contentWindow;
//return element
contentWindow || element
contentDocument
parentWindow;
}
獲得iframe的document對象
存在跨域訪問限制
chromeiframeElementcontentDocument
firefoxiframeElementcontentDocument
ieelementcontentWindowdocument
備注ie沒有iframeElementcontentDocument屬性
(javascript)
復制代碼 代碼如下:
var getIframeDocument = function(element) {
return element
contentDocument || element
contentWindow
document;
};
iframe中獲得父頁面的window對象
存在跨域訪問限制
父頁面windowparent
頂層頁面windowtop
適用於所有浏覽器
獲得iframe在父頁面中的html標簽
存在跨域訪問限制
windowframeElement(類型HTMLElement)適用於所有浏覽器
iframe的onload事件
非ie浏覽器都提供了onload事件例如下面代碼在ie中是不會有彈出框的
(javascript)
復制代碼 代碼如下:
var ifr = document
createElement(
iframe
);
ifr
src =
;
ifr
onload = function() {
alert(
loaded
);
};
document
body
appendChild(ifr);
但是ie卻又似乎提供了onload事件下面兩種方法都會觸發onload
方法一
復制代碼 代碼如下:
<iframe onload="alert(
loaded
);" src="
方法二
//只有ie才支持為createElement傳遞這樣的參數
復制代碼 代碼如下:
var ifr = document
createElement(
<iframe onload="alert(
loaded
);" src="
);
document
body
appendChild(ifr);
由於iframe元素包含於父級頁面中因此以上方法均不存在跨域問題
實際上IE提供了onload事件但必須使用attachEvent進行綁定
復制代碼 代碼如下:
var ifr = document
createElement(
iframe
);
ifr
src =
;
if (ifr
attachEvent) {
ifr
attachEvent(
onload
function(){ alert(
loaded
); });
} else {
ifr
onload = function() { alert(
loaded
); };
}
document
body
appendChild(ifr);
frames
windowframes可以取到頁面中的幀(iframeframe等)需要注意的是取到的是window對象而不是HTMLElement
復制代碼 代碼如下:
var ifr = documentgetElementById(ifr);
var ifrwin = windowframes[];
ifrwinframeElement === ifr; // true
ifrwin === ifr; // false
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19939.html