GOOGLE ADS

понедельник, 25 апреля 2022 г.

Отправляйте сообщения между приложениями в одном окне браузера

У меня есть два отдельных веб-приложения, угловое родительское приложение и дочернее приложение реакции. Родительское приложение загружает дочернее приложение в iframe. Я пытаюсь заставить эти приложения общаться друг с другом window.postMessage(), но либо сообщение не отправляется должным образом, либо не принимается.

Вот именно то, что я пробовал.

Родительское приложение:

window.postMessage(message, "*")

Детское приложение:

window.addEventListener("message", (event) => {
console.log(event)
}

Единственное, что мне нужно сделать, это когда я консольно регистрирую окно на родительском элементе, я вижу:

postMessage: f postMessage: ()
length: 1
name: "postMessage"
arguments: [Exception: TypeError: 'caller', 'callee', and 'arguments' properties may not
be accessed on strict mode functions or the arguments objects for calls to
them at Function.s (<anonymous>:1:83)]
caller: [Exception: TypeError: 'caller', 'callee', and 'arguments' properties may not
be accessed on strict mode functions or the arguments objects for calls to
them at Function.s (<anonymous>:1:83)]


Решение проблемы

Родитель должен отправить сообщение из windowцели (дочерний процесс, iframe в вашем случае), а не из windowобъекта родителя:

const child = document.querySelector('iframe').contentWindow;
child.postMessage(message, "*")

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...