我在父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]。
答案 0 :(得分:0)
所有消息都路由到窗口对象。如果您有多个iFrame,并且您需要知道该消息来自哪一个,那么您需要在消息中包含该消息。
由于iFrame无法知道它所在的iFrame的ID,因此您必须让父母将其置于iFrame中,然后才能在其中使用此响应。