嗨我正在尝试获取iframe元素的内部HTML
我的html文档结构是这样的
<body>
<div>
<iframe id="frame1">
<html>
<button id="mybutton">click me</button>
</html>
</iframe>
</div>
</body>
我正在创建一个chrome扩展我必须显示一个警告当按钮与id mybutton被点击我写一个内容脚本
var greeting = "hola, ";
document.body.innerHTML='<div><iframe id="frame1" src="http://onemoredemo.appspot.com/"></iframe></div>' ;
var iframe = document.getElementById("frame1");
var iframeDocument = iframe.contentDocument || iframe.contentWindow.document
var button = iframeDocument.getElementById("mybutton") ;
if(button ==null)
alert("button is null") ;
我在Chrome中安装了这个扩展,当我访问一个页面,然后文档正文被更改为一个iframe与一个按钮在它。但我面临的警告,其中有按钮是空的,但有按钮在iframe中,为什么我得到这个按钮为空?
3条答案
按热度按时间bwntbbo31#
要在iframe中获取按钮,可以使用以下方法:
显然,您可以使用
iframeDocument
导航以获得您想要的内容,并且使用您似乎知道的.innerHTML
。如果iframe指向父域之外的域,则无法获得iframe的内容。更新日期:
您需要使用代码来获取框架的文档及其内容在它准备好之后,所以您应该使用类似如下的代码:
演示:http://jsfiddle.net/nqTnz/
重要的是如何创建元素并将其追加到DOM中--而不仅仅是使用
innerHTML
。iframe的onload
方法是为了保证它已经准备好了。实际的操作代码在jsFiddle中不起作用,因为存在跨域问题,但这是您应该需要的。khbbv19g2#
在jQuery的源代码中,获取iframe文档的解决方案如下所示:
然后,您通常可以使用
getElementsByTagName
或getElementById
来选择DOM元素:wpx232ag3#
你试过吗?
然后呢