Загрузка…
Загрузка…
postMessage — безопасный способ передать данные между разными контекстами исполнения: окна/iframe, Web Workers, Service Workers.
// родитель → iframe
iframe.contentWindow.postMessage({ type: "PING" }, "https://trusted.example");
// в iframe
window.addEventListener("message", (event) => {
if (event.origin !== "https://parent.example") return; // обязательно!
console.log(event.data);
});targetOriginВторой аргумент (targetOrigin) ограничивает получателя. * удобен в демо и опасен в проде: сообщение может уйти не тому окну.
Всегда проверяйте event.origin на приёме.
worker.postMessage(payload);
navigator.serviceWorker.controller?.postMessage(payload);Данные клонируются (structured clone); для transferable — можно передать ownership (например, ArrayBuffer).
На собеседовании: кросс-окно/worker коммуникация + проверка origin.
