Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Javascript中获取iframe元素中的元素?_Javascript_Google Chrome_Iframe - Fatal编程技术网

如何在Javascript中获取iframe元素中的元素?

如何在Javascript中获取iframe元素中的元素?,javascript,google-chrome,iframe,Javascript,Google Chrome,Iframe,我在文档中有一个元素,如下所示,我可以通过document.getElementById('iframe\u id')获取iframe元素,但是如何获取这个iframe中的元素呢?我尝试了iframelement.contentWindow,返回的DOMWindow没有属性。还尝试了iframelement.docuemnt和iframelement.contentDocument,两者都未定义。我怎样才能得到它?我在实验中使用了最新的Chrome 下面是iframe元素 <iframe

我在文档中有一个元素,如下所示,我可以通过
document.getElementById('iframe\u id')
获取iframe元素,但是如何获取这个iframe中的元素呢?我尝试了
iframelement.contentWindow
,返回的
DOMWindow
没有属性。还尝试了
iframelement.docuemnt
iframelement.contentDocument
,两者都未定义。我怎样才能得到它?我在实验中使用了最新的Chrome

下面是iframe元素

<iframe id='iframe_id'>
<html>
<body>many content here</body>
</html>
</iframe>

这里有很多内容

您应该能够通过
document.getElementById('yourIFrame').document.getElementById('yourElement')访问它。
如果内容与查询它的脚本具有相同的协议、域和端口号,您只能查询iframe中的内容。它被称为

如果是这种情况,那么此代码将显示内容。如果不是-您无法从普通html页面中的普通脚本访问iframe

-在IE8、Chrome 13和Fx6中测试

function showIframeContent(id) {
  var iframe = document.getElementById(id);
    try {
      var doc = (iframe.contentDocument)? iframe.contentDocument: iframe.contentWindow.document;
      alert(doc.body.innerHTML);
    }
    catch(e) {
       alert(e.message);
    }
  return false;
}


<iframe id='iframe_id1' src="javascript:parent.somehtml()"> </iframe>
<br/>
<a href="#" onclick="return showIframeContent('iframe_id1')">Show</a>
<hr/>

<iframe id='iframe_id2' src="http://plungjan.name/"> </iframe>
<br/>
<a href="#" onclick="return showIframeContent('iframe_id2')">Show</a>
<hr/>
函数showIframeContent(id){
var iframe=document.getElementById(id);
试一试{
var doc=(iframe.contentDocument)?iframe.contentDocument:iframe.contentWindow.document;
警报(doc.body.innerHTML);
}
捕获(e){
警报(e.message);
}
返回false;
}




具有:

var iframe = document.getElementById('iframe_id');
要获取内容文档,您可以使用:

var contDoc = iframe.contentDocument || iframe.contentWindow.document;

然后您可以通过id在iframe中搜索您的元素。

我想这应该可以。但是在我运行了你的2条语句之后,我得到了未定义的contDoc。返回的iframe似乎是正确的。@汤姆森:除非iframe源被设置为另一个域,否则它将正常工作。我得到未捕获的DOMEException:阻止原点为“”的帧访问跨原点帧。有什么提示吗?@one-way:如果您拥有iframe代码,请检查解决方法:您的页面和iframe中的页面是否来自同一个域?如果没有,chrome可能不会允许您访问其他DOM。@Tetaxa,如何检查域中的iframe?很可能它们来自不同的域。url的第一部分。如果页面在同一台服务器上,你应该没问题。上面的示例html只是从Chrome底部的Elements窗口中摘录(简化)的。它显示iframe中有一个完整的html。你的意思是这在用户界面上是假的吗?是的。无论如何,如果页面来自同一台服务器,那么我的代码可以工作。请参阅更新关于相同的源代码,直到获得
doc
undefine,非常奇怪。我刚刚在我的Chrome中运行了您的演示,消息框在html中显示了正确的内容。因此,Chrome可能会阻止访问内部DOM,因为它来自不同的域,正如Tetaxa在评论中提到的那样。如果协议、域或端口不同,这是一个安全问题。