为什么以下不起作用:
//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');
});
答案 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的文档对象传递给父级的$
函数。这没有多大意义。
父级的jQuery实例无法触发其他窗口的DOM对象上的事件;
即使可以,它也是iframe的文档,但是您尝试在父文档中监听事件。
这可能有效:
window.parent.$(window.parent.document).trigger('complete');
答案 3 :(得分:-6)
检查这个解决方案,非常棘手
top.frames ['frame_name']。document.getElementById('Processing')。style.display ='none';