2012-06-11 79 views
0

有可能與訪問和修改的iframe內容的postMessage VS jQuery.contents()

$('#iframe_id').contents().find('.stuff_to_modify).addClass('whatever');

但它也可以使用window.postMessage事件,從iframe中,不發送do_something消息腳本收到消息時的修改(添加該類)。

我想知道這是我應該要走的路,什麼是這兩種方法(缺點,優點)之間的差異。因爲我並不需要包括任何腳本在我的iframe了

jQuery的方法似乎更好

+0

如果我是你,我一定用jQuery的 – 2012-06-11 11:09:30

回答

2

你給window.postMessage和jQuery樣品之間的主要區別是,postMessage的允許跨域通信。

這意味着,如果承載iframe的父頁面來自域A,而iframe的內容來自域B,則postMessage允許您進行通信,而jQuery方法會導致安全錯誤。

您所提供的鏈接是一個java腳本包裝到window.postMessage執行的瀏覽器,並回落到窗口位置哈希輪詢不支持它的瀏覽器。其他好處都列在您的鏈接本身。

因此,如果兩個頁面來自相同的來源,即來自同一個域提供,那麼你可以去jQuery的方法本身。如果它來自兩個不同的來源,則可能必須使用JS包裝器。

+0

什麼,如果父文檔具有HTTPS和iframe沒有,將它仍然工作? – Alex

+0

@Alex協議,端口和主機應該是相同的對待兩個頁面來自同一個域。所以,如果一個是http和其他爲https,你可能有window.postMessage去,因爲它是爲跨域處理。我建議你也測試這種情況。 – Ramesh