2014-02-12 34 views
0

我在父html中有這段代碼,它包含一個將發送window.postmessage的iframe子元素。它是父母后消息的孩子。窗口AddEventLinstener在IE中返回無效的調用對象

// Create IE + others compatible event handler 
var eventMethod = iFrame.addEventListener ? "addEventListener" : "attachEvent"; 
var eventer = iFrame[eventMethod]; 
var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message"; 

eventer(messageEvent,function(e) { // THIS ERRORS 
    console.log('parent received message!: ',e.data); 
},false); 

它適用於Firefox和Chrome,但不適用於IE。 eventer ...行在IE中導致無效的調用對象消息。我可以在IE中實際執行上述代碼嗎?

請注意:iFrame [eventMethod]代替window [eventMethod]代碼。

+0

在哪個版本的IE? – adeneo

+0

IE 11.0 Windows 8.1 – blinkomania

+0

似乎如果我使用窗口而不是iFrame它做同樣的事情。部分解決,但我想知道爲什麼。 – blinkomania

回答

0

所有消息都被路由到窗口對象。如果您有多個iFrame,並且您需要知道該消息來自哪一個,那麼您需要將其包含在消息中。

由於iFrame無法知道它所在的iFrame的ID,所以您必須讓父母將此過濾到iFrame中,然後才能在其響應中使用它。

相關問題