看文檔中的postMessage示例:http://developer.chrome.com/trunk/apps/app_external.html#postMessage是否有一個簡單的postMessage使用沙箱頁面的簡單示例?
似乎表明沙箱頁面會同步註冊事件處理程序,否則應該如何獲取postMessage事件?
我想這裏的錯誤沿着這條雲:https://code.google.com/p/chromium/issues/detail?id=154662 看來你不能使用窗口回調到的postMessage發送到沙盒iframe中,但存在這樣的情況您使用包含一個iframe頁面的解決方法的提到沙盒頁面。這裏唯一的問題是,事件發生的時間和地點如何/何時還不清楚......
這個沙盒東西看起來很複雜,它周圍的文檔有誤導性和/或過時。這個例子甚至有意義嗎?沒有先獲取消息並記錄event.source,是否可以向後臺頁面發送消息?
如何在後臺頁面中註冊事件偵聽器以響應從沙盒頁面發回的郵件?這裏有很多問題,我擁有的只是一個破碎的例子。
經過一番玩,這似乎工作: 'setTimeout(function(){ win.contentWindow.frames [0] .postMessage('我剛剛打電話......說...嗨。','' *'); },100);' 但是看起來很瘋狂,需要用超時來做這件事。 – ddumont 2013-04-09 21:20:20
我無法回答你的問題,因爲它的措辭。但你是對的:這個例子有點太過分了。這在技術上是正確的,因爲它確實「將消息發佈到它打開的沙盒頁面。」這不是一個非常有用的例子,因爲它不可靠。請注意WHATWG規範的建議:「要將消息發送到新創建的子iframe的窗口,建議作者讓子文檔向其父發佈消息,宣佈他們準備接收消息,並讓父母等待在開始發佈消息之前爲此消息。「 – sowbug 2013-04-11 02:25:03
我一直在通過它。不幸的是,答案並不簡潔,但它能夠完成工作,而且確實按照我猜測他們打算的方式工作。我會在今天晚些時候回答我自己的問題。 – ddumont 2013-04-11 12:28:34