2011-11-16 169 views
1

當我使用a = window.frames [「iframe」]訪問iframe時,它說a是一個DOMWindow。
但是當我嘗試訪問文檔時,它說未定義,但是當我使用top時,它指向它自己。這就像iframe只有自己作爲一個屬性。
當我通過document.getElementById(「iframe」)訪問它時,它將自己標識爲HTMLIFrame,但問題仍然存在,這真的很奇怪,我需要幫助。HTML iFrame內容

我曾嘗試:

document.getElementById("iframe").getDocument 
document.getElementById("iframe").getDocument() 
document.getElementById("iframe").html.body 
document.getElementById("iframe").body 
document.getElementById("iframe").document.getElementById("btag") 

,還有更多的組合。

我真的不知道爲什麼這樣做。

謝謝。

回答

1

您需要根據瀏覽器訪問contentWindowcontentDocument

我已經做了一些光測試,似乎.document不工作(我是在鍍鉻),這可能是一個更好的解決方案:

http://jsfiddle.net/sTkVR/4/

document.frames [「frmID」]返回相當於contentWindowcontentDocument這就是它說的原因DOMWindow

+1

如果使用jQuery可以簡單地訪問iframe中的內容與.contents()http://api.jquery.com/contents/ –

+0

好了,顯然鉻用途contentWindow contentDocument的這一翻譯,但我描述的問題仍然存在。 – thabubble

+0

更新瞭解決方案 –

0

window.frames屬性實際上是對窗口本身的循環引用。

window.frames === window 
window.frames === window.self 

DOMWindow是,它具有一個length屬性和數字鍵的特性的陣列狀的結構。

window.frames屬性存在的唯一原因是通過其數字索引(如window.frames[0]或僅frames[0])提供對幀的訪問。當然,您可以訪問給定框架window[0],但這看起來不正確。這種僞陣列(如frames[index]訪問)的

元素是DOMWindow情況下(在I幀的情況下,它們指向iframe.contentWindow),如果他們與當前窗口一個共同的起源,你可以訪問他們的document特性(即相同協議,域和端口)。

如果您命名框架或iframe(具有id屬性),它們(至少在基於WebKit的瀏覽器中)映射到其所有者窗口的屬性。在iframe的情況下,該屬性指向元素,而不是指向其contentWindow屬性。

// <iframe name="a"> 
frames['a'] === window['a'] === document.getElementById('a')