使用DOM访问iframe

时间:2009-12-08 15:39:07

标签: javascript html dom

在下面的代码中,警报工作正常并打印“DIV:IFRAME”,但它应该说cNs [1] .childNodes [1] .document没有属性。

HTML:

<div id="WinContainer">
 <div style="display: none;"><iframe id="frame1" name="frame1"></iframe></div>
 <div style="display: none;"><iframe id="frame2" name="frame2"></iframe></div>
</div>

JavaScript的:

var cNs = document.getElementById('WinContainer').childNodes;
alert(cNs[1].tagName + ' : ' + cNs[1].childNodes[1].tagName);
cNs[1].childNodes[1].document.location = 'someurl.pl';

但如果我这样做:

frame1.document.location = 'someurl.pl';

它工作正常。

4 个答案:

答案 0 :(得分:5)

iframe DOM节点有一个名为contentDocument的属性,它相当于document,但对于iframe

如果正在显示的页面位于另一台服务器上(或者甚至位于同一服务器上的其他端口上),则会出现尝试访问它的安全性异常。

不确定这是否适用于IE。

答案 1 :(得分:0)

我对javascript并不熟悉,但看起来你使用的是错误的cN。它看起来好像是一个包含子节点和代码

的数组
cNs[1].childNodes[1].document.location = 'someurl.pl';

正在尝试获取不存在的子节点。试试这可能有用。

cNs[1].document.location = 'someurl.pl';

答案 2 :(得分:0)

编辑:frame1应为:

cNs[0].childNodes[0].document.location

请记住事情是0索引。

答案 3 :(得分:0)

您还可以引用可靠的 contentWindow 属性来获取该iFrame的文档对象:

cNs[0].childNodes[0].contentWindow.document