Window AddEventLinstener在IE中返回无效的调用对象

时间:2014-02-12 08:13:41

标签: javascript iframe postmessage

我在父html中有这段代码,其中包含将发送window.postmessage的iframe子代。它是父母邮寄的孩子。

// 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]。

1 个答案:

答案 0 :(得分:0)

所有消息都路由到窗口对象。如果您有多个iFrame,并且您需要知道该消息来自哪一个,那么您需要在消息中包含该消息。

由于iFrame无法知道它所在的iFrame的ID,因此您必须让父母将其置于iFrame中,然后才能在其中使用此响应。