HTML iFrame内容

时间:2011-11-16 17:05:16

标签: javascript html iframe

当我使用= 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")

以及更多组合。

我真的不知道为什么会这样。

感谢。

2 个答案:

答案 0 :(得分:1)

您需要访问contentWindowcontentDocument,具体取决于浏览器。

我做了一些轻量级测试,似乎.document无法正常工作(我使用的是chrome)这可能是一个更好的解决方案:

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

document.frames ['frmID']返回等效的contentWindowcontentDocument,这就是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')