Кажется, что точка window.postMessage должна позволить безопасную коммуникацию между окнами/кадрами, размещенными на различных доменах, но это, на самом деле кажется, не позволяет это в Chrome.
Вот сценарий:
Я получаю это сообщение об ошибке в Chrome:
Не мог добавить сообщение к A. Получатель возникает B.
Вот код, который регистрирует слушателя события сообщений на странице на A:
window.addEventListener(
"message",
function (event) {
// Do something
},
false);
Я также попытался звонить window.postMessage(some_data, '*')
, но все, что делает, подавляют ошибку.
Я просто упускаю суть здесь, разве window.postMessage (...) не предназначен для этого? Или я просто делаю его ужасно неправильно?
*Текст/HTML Типа пантомимы, которым это должно остаться.
Вот пример, работающий в Chrome 5.0.375.125.
Страница B (содержимое iframe):
<html>
<head></head>
<body>
<script>
top.postMessage('hello', 'A');
</script>
</body>
</html>
Обратите внимание на использование top.postMessage
или parent.postMessage
not window.postMessage
здесь
Страница A:
<html>
<head></head>
<body>
<iframe src="B"></iframe>
<script>
window.addEventListener( "message",
function (e) {
if(e.origin !== 'B'){ return; }
alert(e.data);
},
false);
</script>
</body>
</html>
A и B должна иметь вид http://domain.com
EDIT:
Из другой вопрос , он смотрит домены (A и B здесь) должен иметь /
для правильной работы postMessage
.