从父框架触发iframe内元素的事件处理程序

13

我有一个 HTML 页面,在其中使用 jQuery 给链接附加了点击事件。然后,我使用 iframe 从另一个页面引用了这个 HTML 页面。但是,我无法使用 JavaScript 触发该链接上附加的事件(当我用鼠标点击链接时,事件可以被触发)。如何从父框架触发该事件?我尝试了以下方法,但没有成功:

var frame = $('#mainFrame'); // the iframe I am trying to access
var link = $('a.btn', frame.contents()); // the element is found correctly
link.trigger('click');  // nothing happens. 
var e = link.data('events');  // e is undefined. 

这个框架是否在同一个域中? - xdazz
现在全部在本地主机下。 - YANG Lei
我理解在跨站脚本攻击方面我做不到,但是在同一域名下做可以吗? - YANG Lei
1
好的,我在这里找到了一篇帖子:链接。如果我使用frame[0].contentWindow.$('a.btn').trigger('click')它会起作用。有人能指出其中的区别吗? - YANG Lei
以下我的回答解决了你的问题吗? - Aamir Afridi
2个回答

16

以下是您可以操作的方法。

document.getElementById('ifrmMsg').contentWindow.$('a:first').trigger('click');

您也可以使用postMessage()来实现此目的。它也可以在跨域情况下工作。但是iFrame内的JS必须监听message事件,即您需要控制iFrame的源。


1
优秀的例子。谢谢! - Juliomac

2
只需将onload()事件放在iframe标签内即可。
<iframe src="http://myURL.com" onload="myFunction()">

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接