当我使用= window.frames [“iframe”]访问iframe时,它表示a是DOMWindow。
但是当我尝试访问文档时,它表示未定义,但是当我使用top时,它会自动返回它。就像iframe只将自己作为财产一样
当我通过document.getElementById(“iframe”)访问它时,它将自己标识为HTMLIFrame,但问题仍然存在,这非常奇怪,我需要帮助。
我试过了:
document.getElementById("iframe").getDocument
document.getElementById("iframe").getDocument()
document.getElementById("iframe").html.body
document.getElementById("iframe").body
document.getElementById("iframe").document.getElementById("btag")
以及更多组合。
我真的不知道为什么会这样。
感谢。
答案 0 :(得分:1)
您需要访问contentWindow
或contentDocument
,具体取决于浏览器。
我做了一些轻量级测试,似乎.document
无法正常工作(我使用的是chrome)这可能是一个更好的解决方案:
document.frames ['frmID']返回等效的contentWindow
或contentDocument
,这就是DOMWindow
答案 1 :(得分:0)
window.frames
属性实际上是对窗口本身的循环引用。
window.frames === window
window.frames === window.self
DOMWindow
是一个类似于数组的结构,因为它具有length
属性和数字键的属性。
window.frames
属性的唯一原因是,通过window.frames[0]
或frames[0]
等数字索引提供对框架的访问权限。当然,您可以访问给定的框架window[0]
,但这看起来不正确。
此伪数组的元素(作为frames[index]
访问)是DOMWindow
的实例(如果是iframe,则指向iframe.contentWindow
),您可以访问他们的document
如果属性与当前窗口具有共同的来源(即相同的协议,域和端口)。
如果您命名框架或iframe(具有id
属性),则它们(至少在基于WebKit的浏览器中)映射到其所有者窗口的属性。如果是iframe
,则该属性指向<iframe>
元素,而不是contentWindow
属性。
// <iframe name="a">
frames['a'] === window['a'] === document.getElementById('a')