2017-01-20 4 views
0

Итак, на субдомене моего домена У меня есть html-файл, например, file.html, который также включает в себя <script src="https://example.com/script.js">.JS postMessage не работает

Затем этот script.js имеет некоторые слушатель, связанные с этим HTML, а также функцию отправки сообщений на родитель, которые выглядят следующим образом:

v.sendMessageToParent = function (message) { 
    var jsonMessage = { 
     action: message 
    }; 
    var win = window.frames.target; 
    win.postMessage(jsonMessage, '*'); 
}; 
v.sendActionMessageToParent = function (action) { 
    var jsonMessage = { 
     action: 'action', 
     type: action 
    }; 
    var win = window.frames.target; 
    win.postMessage(jsonMessage, '*'); 
}; 

Затем на другой домен У меня есть iframe, который src есть file.html.

В этом другом домене также есть <script src="example.com/main.js">, и мне нужно это main.js для прослушивания сообщений, отправленных с script.js.

В main.js У меня есть этот код:

if (window.addEventListener) { 
    window.addEventListener("message", messageHandler); 
} else { 
    window.attachEvent("onmessage", messageHandler); 
} 
function messageHandler(event) { 
    console.log(event.data); 
} 

Но я не получаю ничего. Не отображаются JS, домен или другие ошибки, просто отключите консоль.

Где я ошибаюсь?

+0

от MDN window.frames - возвращает само окно, которое представляет собой массив типа объекта, список прямых субкадров текущего окна , Итак, что это за конструкция window.frames.target? –

+0

Я просто взял эту функцию откуда-то, так что ... Попробовал перейти на window.parent.postMessage, до сих пор ничего не получил, – Coffee

ответ

1

Возможно, вы забыли назвать свою IFrame «цель»:

<iframe src="http://target.com" name="target"> 

<script> 
    var win = window.frames.target; 
    win.postMessage("message", *); 
</script> 
Смежные вопросы