Javascript 是否可以为在iframe(同一域)内导航的用户捕获JS事件?

Javascript 是否可以为在iframe(同一域)内导航的用户捕获JS事件?,javascript,javascript-events,jquery,Javascript,Javascript Events,Jquery,我有一个页面,其中有许多iFrame,它们在同一个域上加载不同的页面。每个iframe都有普通页面,其中包含链接、表单等。。我需要做的是向父页面添加一段JS,它将捕获用户在任何iframe内导航的事件。所以,如果有人在其中一个iFrame中单击某个内容,或者提交表单,或者做类似的事情,我想抓住它。到目前为止,我已经尝试过不同的版本,但运气不佳 $(document).ready(function() { $("iframe").each(function(){

我有一个页面,其中有许多iFrame,它们在同一个域上加载不同的页面。每个iframe都有普通页面,其中包含链接、表单等。。我需要做的是向父页面添加一段JS,它将捕获用户在任何iframe内导航的事件。所以,如果有人在其中一个iFrame中单击某个内容,或者提交表单,或者做类似的事情,我想抓住它。到目前为止,我已经尝试过不同的版本,但运气不佳

    $(document).ready(function() {
        $("iframe").each(function(){ 
            $(this).bind("unload", function(){
                alert(1);
            });
        }); 
    });
你可以做:

$(document).ready(function() {
    $("iframe").each(function(){ 
        $(this).contains().find('body').on("click", "a", function(){
            alert('1');
        });
    }); 
});

通过这种方式,您可以从父页面附加一个事件处理程序,该事件处理程序检测iframe内每个链接上的单击并发出警报1。只有当iframe位于主页的同一域上时,此选项才有效,否则contains()不起任何作用。

?您有权控制在iframe中打开的那些页面吗?是的,我有控制权,如果我从实际页面内部分配事件,则此选项有效。但是我想知道是否可以做些什么来分配这些页面之外的事件。@JeffreySweeney是正确的。在这方面的最佳实践是使用postMessage()实现一个解决方案,如果浏览器支持它(IE7+)。为什么“addEventListener”不是解决方案的一部分?它可能是,还是应该是?@BrentArias我使用jQuery
on()
函数向body元素添加事件侦听器。侦听器侦听
单击
标记上的
事件此解决方案可能在短期内有效,但不可扩展,因为随着应用程序需求的变化,它将不支持其他域、合作伙伴。