Я намагаюся змусити банальний postMessage
приклад працювати ...
- в IE10
- між вікнами / вкладками (проти iframes)
- за походженням
Видаліть будь-яку з цих умов, і все працює нормально :-)
Але, наскільки я можу зрозуміти, між вікнами, 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.