2014-09-26 34 views
1

我知道我只能在一個窗口中觸發事件。不過,我想這樣的: 在頂部的窗口,我寫道:如何從頂層窗口觸發事件到iframe?

jQuery('#some-popup').trigger('opened-popup'); 

而在iframe中我寫道:

$("#some-popup", window.parent.document).bind('opened-popup', function() { 
      alert('ok'); 
}); 

我在做什麼錯?

+0

你的iframe是否也包含jQuery,它們在同一個域上? – antyrat 2014-09-26 15:04:10

+0

iframe需要jQuery和Windows有一個域 – Dmitro 2014-09-26 15:06:21

+0

我認爲你需要做一些像frame.window.jQuery(「」#popup).trigger – artm 2014-09-26 15:24:40

回答

2

在你的框架試試這個:

,而不是

$("#some-popup", window.parent.document).bind('opened-popup', function() { 
     alert('ok'); 
}); 

做到這一點

parent.$("#some-popup", window.parent.document).bind('opened-popup', function() { 
     alert('ok'); 
}); 

有到位的jQuery的兩個實例,一個家長和一個用於框架。你在父類的jQuery上觸發事件,但是在框架自己的jQuery中附加它。如果您在子級中附加父級的jQuery,則bind(或.on())應該可以工作。

編輯:您可能不需要「窗口.parent.document」綁定後,您附加到父項事件。

0

如果你想避免「問題」與Windows/I幀之間的可達性/可視性我建議你easyXDM

easyXDM是一個JavaScript庫,讓你作爲一個開發者 容易解決的限制集由相同原產地 政策制定,反過來使得跨域的API溝通和公開API變得容易。

+0

我知道這個lib。但我想明白爲什麼我的例子不起作用 – Dmitro 2014-09-26 15:09:09