2011-05-18 44 views
1

主窗口正在接收來自其內嵌的iframe的消息。如何獲得發佈給定消息的iframe的引用?

window.addEventListener("message", function(e){ 
alert(e.data); 
}, true); 

如何知道消息來自哪個DOM元素?問題是我在文檔中有幾個,它們都來自同一個域,但與主窗口不同。

回答

1

在消息傳遞代碼(或其他)的Firefox實現中,事件對象具有可以檢查的「uri」和「domain」屬性,以及引用原始window對象的「source」屬性。

window.addEventListener("message", function(e){ 
    var frames = window.frames; 
    for (var i = 0; i < frames.length; ++i) 
     if (frames[i] === e.source) { 
      // found it ... 
     } 
} 
+0

我覺得鉻這個東西有一個長期持久的bug,源屬性是undefined。 – rsk82 2011-05-18 21:58:37

+0

是的,剛剛確認它與13.0.767.1.dev-m。有了這個錯誤,發送消息的整個想法就失去了意義。 – rsk82 2011-05-18 22:51:33

+1

那麼,你仍然可以檢查域和URI,並且沒有什麼能阻止其他窗口在事件數據中傳遞對自己(或標識符或其他)的引用。 – Pointy 2011-05-18 23:14:55