在iframe的父窗口中触发事件

时间:2011-01-05 06:15:41

标签: javascript jquery javascript-events

为什么以下不起作用:

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

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

以下IS工作:

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

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

4 个答案:

答案 0 :(得分:41)

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

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

答案 1 :(得分:11)

您可以尝试在父文档中添加触发函数,然后从iframe将其作为常规函数调用。这应该确保您在正确的文档上下文中触发事件。

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

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

答案 2 :(得分:0)

直接回答OP的问题:因为第一个代码示例中有一个错误。

您将iframe的文档对象传递给父级的$函数。这没有多大意义。

  1. 父级的jQuery实例无法触发其他窗口的DOM对象上的事件;

  2. 即使可以,它也是iframe的文档,但是您尝试在父文档中监听事件。

这可能有效:

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

答案 3 :(得分:-6)

检查这个解决方案,非常棘手

top.frames ['frame_name']。document.getElementById('Processing')。style.display ='none';