2014-02-12 4 views
0

У меня есть этот фрагмент кода в родительском html, который содержит дочерний элемент iframe, который отправит window.postmessage. Его ребенок к родительскому postmessage.Window AddEventLinstener возвращает Invalid call Object в 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 ... вызывает сообщение Invalid call Object в IE. Могу ли я сделать код выше в IE?

Обратите внимание: iFrame [eventMethod] вместо окна [eventMethod] в коде.

+0

В какой версии IE? – adeneo

+0

IE 11.0 Windows 8.1 – blinkomania

+0

Кажется, что если я использую окно вместо iFrame, он делает то же самое. Частично решено, хотя я хотел бы знать, почему. – blinkomania

ответ

0

Все сообщения направляются к объекту окна. Если у вас несколько iFrame, и вам нужно знать, из какого сообщения пришло сообщение, вам нужно включить это в свое сообщение.

Поскольку iFrame не имеет возможности узнать идентификатор iFrame, в котором он находится, вы должны иметь родителя, прошедшего это в iFrame, и затем он может использовать это в своих ответах.

Смежные вопросы