如何在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在评论中提到的那样。如果协议、域或端口不同,这是一个安全问题。