Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.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_Jquery_Html_Events_Iframe - Fatal编程技术网

Javascript 将子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的源代码,所以我想这样做,如果可能的话

我有一个由JS生成的iframe:

<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();