2011-01-05 165 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 = '無'。;