Я пытаюсь сделать тривиальный пример postMessage
...
- в IE10
- между окнами/вкладками (по сравнению с iframe)
- по происхождению
Удалите любое из этих условий, и все будет работать нормально: -)
Но, насколько я могу судить, между окнами postMessage
работает только в IE10, когда оба окна совместно используют источник. (Ну, на самом деле - и странно - поведение немного более разрешительно, чем это: два разных источника, которые совместно используют хост, тоже работают).
Является ли это документированной ошибкой? Любые обходные пути или другие рекомендации?
(Примечание: Этот вопрос затрагивает проблемы, но его ответ касается IE8 и IE9 - - не 10)
Подробнее + пример...
страница запуска demo
<!DOCTYPE html>
<html>
<script>
window.addEventListener("message", function(e){
console.log("Received message: ", e);
}, false);
</script>
<button onclick="window.open('http://jsbin.com/ameguj/1');">
Open new window
</button>
</html>
запущена страница demo
<!DOCTYPE html>
<html>
<script>
window.opener.postMessage("Ahoy!", "*");
</script>
</html>
Это работает по адресу http://jsbin.com/ahuzir/1 - поскольку обе страницы размещены в одном месте (jsbin.com). Но переместите вторую страницу где-нибудь еще, и она не работает в IE10.