Javascript 将子iframe中的事件附加到父窗口中的处理程序
我不能直接访问这个iframe的源代码,所以我想这样做,如果可能的话 我有一个由JS生成的iframe:Javascript 将子iframe中的事件附加到父窗口中的处理程序,javascript,jquery,html,events,iframe,Javascript,Jquery,Html,Events,Iframe,我不能直接访问这个iframe的源代码,所以我想这样做,如果可能的话 我有一个由JS生成的iframe: <iframe name="temp_iframe" width="100%" height="95%" src="'+the_url+'"></iframe> 编辑:而且,它在同一个域上 使用contents()访问iframe中的文档对象。请注意,在一个文档中使用jQuery库来操作另一个文档通常会出现问题,通常应该避免使用。但是,在绑定事件的情况下,它确实起作
<iframe name="temp_iframe" width="100%" height="95%" src="'+the_url+'"></iframe>
编辑:而且,它在同一个域上 使用contents()
访问iframe中的文档对象。请注意,在一个文档中使用jQuery库来操作另一个文档通常会出现问题,通常应该避免使用。但是,在绑定事件的情况下,它确实起作用
$('[name=temp_iframe]').contents().find('button').click(function() {
alert('click');
});
这需要加载iframe及其内容,因此需要在
$(窗口).load()处理程序中加载。您不能跨文档执行live
/委托,因为事件不会从子文档传播到其父文档。在纯JavaScript中,它将是:
document.getElementById("frameId").contentDocument.getElementById("buttonId").click();
如果需要按属性值和标记名搜索元素,可以:
document.querySelectorAll('[name=temp_iframe]')[0].contentDocument.getElementsByTagName('button')[0].click();
如果iframe的源是另一个域,由于跨站点脚本限制,您无法执行此操作。它是同一个域。。。我就是没办法。我在波特兰市工作,或者,我必须请求更改服务器端代码…建议更改标题:将子iframe中的事件附加到父窗口中的处理程序。当前的措辞听起来好像您想.trigger()
子对象中的事件。这种混乱导致了一次错误的近距离重复投票。太好了!谢谢但是我把它放在了.load('iframe')中
document.querySelectorAll('[name=temp_iframe]')[0].contentDocument.getElementsByTagName('button')[0].click();