Javascript 使用DOM访问iframe

Javascript 使用DOM访问iframe,javascript,html,dom,Javascript,Html,Dom,在下面的代码中,警报工作正常,并按应有的方式打印“DIV:IFRAME”,但随后会显示cNs[1].childNodes[1]。文档没有属性 Html: 但如果我这样做: frame1.document.location = 'someurl.pl'; 它工作正常。DOM节点的iframe有一个名为contentDocument的属性,该属性相当于document,但对于该iframe 如果正在显示的页面位于另一台服务器上(或者甚至位于同一台服务器上的不同端口上),则尝试访问该页面时会出现安全

在下面的代码中,警报工作正常,并按应有的方式打印“DIV:IFRAME”,但随后会显示cNs[1].childNodes[1]。文档没有属性

Html:

但如果我这样做:

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

它工作正常。

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

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


不确定这是否适用于IE。

我对javascript不太熟悉,但看起来您使用cNs不正确。它看起来好像是一个包含子节点和代码的数组

cNs[1].childNodes[1].document.location = 'someurl.pl';
正在尝试获取不存在的子节点。试试这个,可能有用

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

编辑:框架1应为:

cNs[0]。子节点[0]。文档。位置


请记住,内容是0索引的。

您还可以引用reliablecontentWindow属性来访问该iFrame的文档对象:

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

frame1.document.location之所以有效,是因为您正在更改框架的位置,而无法从中读取任何内容。例如,当你点击一个按钮时,你可能会有一个大的iframe,它加载了Facebook或Myspace,但是javascript可能无法访问其中的任何一个内容,因为它可能会窃取你的个人数据。你的代码实际上并没有警告“DIV:iframe”。请参见cNs[1]。childNodes[1]为空。IE和firefox正在为它们编制索引differently@unknown:与问题中的标记无关
cNs[1]。childNodes[1]
在所有浏览器中都会被屏蔽,因为标记之间没有空格。在IE中,如果索引方式不同,那么在firefox中,我的元素将被索引为1,1而不是0,0。
cNs[1].document.location = 'someurl.pl';
cNs[0].childNodes[0].contentWindow.document