Подтвердить что ты не робот

IE8/9 window.postMessage не работает, но почему?

"postMessage" - это API HTML5, он доступен во всех основных браузерах, включая IE8/9. Я пытаюсь создать всплывающее окно со страницы и иметь возможность поговорить со всплывающим окном, используя "postMessage". Это работает в каждом браузере, кроме IE8/9. Разочарованный!

Похоже, что IE8/9 поддерживает только связь между iframe, но не между двумя окнами, даже окна находятся в одной иерархии.

4b9b3361

Ответ 1

Метод .postMessage работает, вам просто нужно понять, как он работает с IE8 и выше. К сожалению, для IE8 и IE9 он не будет делать то, что вы ищете (хотя в IE10). Хотя вы можете отправлять сообщения между кадрами в IE8/9, вы не можете отправлять сообщения в отдельное окно.

В некоторых случаях работает работа. Мартин Биби обсуждает его в последнем абзаце своего блога о проблеме: PostMessage Popups и IE.

Подробнее об этом и о нескольких других предостережениях см. в статье Eric Lawrence в MSDN.

Ответ 2

Я обнаружил, что .postMessage() в IE9 был ненадежным, если я не использовал String s.

Моим обходным путем было просто вызвать .postMessage(JSON.stringify({object: 'data'})) и использовать JSON.parse() в функции onMessage() на другом конце.