在下面的代码中,警报工作正常并打印“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';
它工作正常。
答案 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