2011-05-17 32 views

回答

75

Can I use cross-document messaging

FF3 +,IE8 +,Chrome瀏覽器,Safari瀏覽器(5?),Opera10 +

+32

需要注意的是IE8/9只支持數據參數字符串,而所有其他瀏覽器都支持對象。 – 2013-06-04 04:41:02

+1

@Brando:你評論剛剛救了我一天。我想我會花幾個小時試圖弄清IE爲什麼不起作用;但是,我正在發送一個對象。 – 2013-09-01 16:05:49

+4

舊的帖子,但你可以發送json(刺)並使用eval來解碼對象 – ElSinus 2014-06-24 13:02:30

11
+0

很好的指出!我甚至不知道它可以在其他瀏覽器的windowws/tabs中使用> _> – Raynos 2011-05-17 20:29:26

+0

IE9支持跨Windows /標籤頁的postMessage的任何想法? – Blowsie 2011-08-05 13:22:58

+0

postMessage()API現在對IE9模式頁面具有異步行爲。本文http://blogs.msdn.com/b/ieinternals/archive/2009/09/16/bugs-in-ie8-support-for-html5-postmessage-sessionstorage-and-localstorage.aspx解釋了仍然存在的問題在IE9中並不確定它是否已經得到糾正。 – 2011-08-05 14:36:35

2

爲了最近的價值,我遇到了一些奇怪的webkit瀏覽器/版本,它們不支持postMessage。我使用IE(8)檢測作爲尋求替代方法的手段。相反,我也許應該只是做了一些這樣的事情:

if(window.postMessage){ 
    console.log('Supports post message'); 
} 

或者可能有點清潔:

var pm_is_supported = typeof(window.postMessage) == 'function'; 
+0

謝謝,這是好東西。這不是問題的答案,而應該是一個評論。 – 2014-04-08 08:19:18

+0

您的清潔解決方案在IE8中無法使用。在IE8中window.postMessage以對象形式返回 – KingOfHypocrites 2014-05-25 15:14:35

+0

我會堅持:return !! window.postMessage; – KingOfHypocrites 2014-05-25 15:17:09

7

的postMessage在IE8 +無論其

  • 記住支持了IE9及以下要求數據以字符串形式傳遞,而不是作爲對象傳遞。
  • IE不喜歡你在頁面加載後立即打電話postMessage(我假設這與你發佈的需要時間加載的iframe有關)。
    使用setTimeout等待一兩秒鐘,然後致電postMessage
    我花了幾個小時才弄明白這一點,IE並沒有給我任何錯誤信息,直到我添加了setTimeout,它才靜靜地無所事事。

如果你想開始在IE瀏覽器實際上做工作演示,看看this nifty tutorial by Ilya Kantor