熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

js操作iframe的一些方法介紹

2013-11-15 11:56:48  來源: JSP教程 

   獲得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 elementcontentWindow;
//return elementcontentWindow || elementcontentDocumentparentWindow;
}

   獲得iframe的document對象
存在跨域訪問限制

  chromeiframeElementcontentDocument
firefoxiframeElementcontentDocument
ieelementcontentWindowdocument
備注ie沒有iframeElementcontentDocument屬性

  (javascript)

復制代碼 代碼如下:
var getIframeDocument = function(element) {
return elementcontentDocument || elementcontentWindowdocument;
};

   iframe中獲得父頁面的window對象
存在跨域訪問限制

  父頁面windowparent
頂層頁面windowtop
適用於所有浏覽器

   獲得iframe在父頁面中的html標簽
存在跨域訪問限制

  windowframeElement(類型HTMLElement)適用於所有浏覽器

   iframe的onload事件
非ie浏覽器都提供了onload事件例如下面代碼在ie中是不會有彈出框的

  (javascript)

復制代碼 代碼如下:
var ifr = documentcreateElement(iframe);
ifrsrc = ;
ifronload = function() {
alert(loaded);
};
documentbodyappendChild(ifr);

  
但是ie卻又似乎提供了onload事件下面兩種方法都會觸發onload

  方法一

復制代碼 代碼如下:
<iframe onload="alert(loaded);" src="

  
方法二
//只有ie才支持為createElement傳遞這樣的參數

復制代碼 代碼如下:
var ifr = documentcreateElement(<iframe onload="alert(loaded);" src=");
documentbodyappendChild(ifr);

  
由於iframe元素包含於父級頁面中因此以上方法均不存在跨域問題

  實際上IE提供了onload事件但必須使用attachEvent進行綁定

復制代碼 代碼如下:
var ifr = documentcreateElement(iframe);
ifrsrc = ;
if (ifrattachEvent) {
ifrattachEvent(onload function(){ alert(loaded); });
} else {
ifronload = function() { alert(loaded); };
}
documentbodyappendChild(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
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.