Javascript - 如何在使用iframe时使用dom,而不是jquery更改页面内的元素内容

时间:2010-05-19 17:52:02

标签: javascript dom

我有这个iframe,你可以看到它用onload触发器调用js函数。

<iframe name="top" id="top" width="99%" height="20%" src="top.htm" frameborder="0" scrolling="no" onload="log_in()"></iframe>

我需要做的是在该函数中实现“top.htm”(更改innerHTML和类似内容)中的元素。

但问题是功能无法识别“top.htm”页面的元素,只识别index.htm(带iframe的页面)中的元素。

P.S。我必须使用DOM,我必须使用iframe。

任何人都知道该怎么做?

10x: - )

2 个答案:

答案 0 :(得分:3)

例如访问所有dom元素:

document.getElementById("top").contentWindow.document.getElementsByTagName("*")

这是你的问题吗?

答案 1 :(得分:2)

Iframe窗口及其文档

可以使用name属性通过frames数组获取iframe生成的窗口和加载到iframe中的文档的引用。

window.frames[iframeName]
window.frames[iframeName].document

只要您将名称属性附加到iframe,帧数组引用方法即使在相当旧的浏览器中也具有广泛的支持。为获得最佳效果,请同时使用名称和ID。

对于更多最新的浏览器,iframe中的文档也可以通过iframe元素的contentWindow(IE win)和contentDocument(DOM)属性引用:

// IE5.5+ windows
document.getElementById(iframeId).contentWindow
document.getElementById(iframeId).contentWindow.document

,或者

// DOM 
document.getElementById(iframeId).contentDocument

来自http://www.dyn-web.com/tutorials/iframes/

示例:http://www.dyn-web.com/tutorials/iframes/refs.php