Итак, на субдомене моего домена У меня есть 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, домен или другие ошибки, просто отключите консоль.
Где я ошибаюсь?
от MDN window.frames - возвращает само окно, которое представляет собой массив типа объекта, список прямых субкадров текущего окна , Итак, что это за конструкция window.frames.target? –
Я просто взял эту функцию откуда-то, так что ... Попробовал перейти на window.parent.postMessage, до сих пор ничего не получил, – Coffee