2011-01-05 167 views
17

为什么以下不工作:触发事件

//iframe: 
window.parent.$(document).trigger('complete'); 

//parent window: 
$(document).bind('complete', function(){ 
    alert('Complete'); 
}); 

而下面是工作:

//iframe: 
window.parent.$('body').trigger('complete'); 

//parent window: 
$('body').bind('complete', function(){ 
    alert('Complete'); 
}); 

+0

可能重复的[触发点击事件在iframe父窗口](http://stackoverflow.com/questions/3521947/trigger-click-event-in-iframe-parent-window) – 2016-05-11 17:09:01

回答

36

跟踪事件的方式,您只能在同一文档上触发或接收事件。

尝试

window.parent.$(window.parent.document).trigger('complete'); 
+0

我基本上有同样的问题YUI3,有什么提示? – danjah 2011-02-05 07:15:28

+0

@Danjah我从来没有真正使用过YUI,所以我不确定我能帮上忙。但是,完全可以使用类似的方法:window.parent.YUI.use('node-event-simulate',function(Y){Y.one(window.parent.document).simulate('click ');});但是,您可能只想在父级上公开一个方法,代表您的iframe,ala @Ken Redler的建议,执行所需的触发。 – HackedByChinese 2011-02-05 11:14:36

+0

Alrighty,非常感谢 - 我肯定会给出一个bash,在尝试触发现有的处理程序之前开始模拟事件时有点谨慎......但我可能不得不这样做。 – danjah 2011-02-05 21:50:11

10

你可以尝试在父文件中添加触发功能,那么它调用从IFRAME常规功能。这应确保您在正确的文档上下文中触发事件。

// In Parent 
function triggerComplete() { 
    $(document).trigger('complete'); 
} 

// In iFrame 
window.parent.triggerComplete(); 
-5

检查该溶液中,其非常棘手

top.frames [ 'FRAME_NAME']的document.getElementById( '处理')的style.display = '无'。;