Я пытаюсь заставить postMessage
работать тривиальный пример ...
- в IE10
- между окнами / вкладками (по сравнению с iframe)
- через происхождение
Удалите любое из этих условий, и все заработает :-)
Но, насколько я могу судить, между окнами работает postMessage
только IE10, когда оба окна имеют общий источник. (Что ж, на самом деле - и это странно - поведение немного более снисходительно, чем это: два разных происхождения, которые имеют общий хост, похоже, тоже работают).
Это задокументированная ошибка? Какие-нибудь обходные пути или другие советы?
(Примечание: этот вопрос касается проблем, но его ответ касается IE8 и IE9, а не 10)
Подробнее + пример ...
демонстрация страницы запуска
<!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>
запущенная демонстрация страницы
<!DOCTYPE html>
<html>
<script>
window.opener.postMessage("Ahoy!", "*");
</script>
</html>
Это работает по адресу: http://jsbin.com/ahuzir/1 - потому что обе страницы размещены в одном и том же источнике (jsbin.com). Но переместите вторую страницу в другое место, и в IE10 она не удастся.