Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: postMessage, iframe, cross-origin, window messaging, event listener

Как организовать взаимодействие между основной страницей и страницей внутри iFrame, если прямой доступ к функциям друг друга невозможен?

Вопрос проверяет понимание механизмов кросс-доменного взаимодействия с iFrame через postMessage API.

Короткий ответ

Для взаимодействия между страницей и iFrame используется метод window.postMessage. Родительская страница отправляет сообщение через iframe.contentWindow.postMessage, а iFrame — через window.parent.postMessage. На принимающей стороне сообщение ловится через событие message. Обязательно проверяется origin отправителя для безопасности. Это стандартный способ обмена данными между окнами из разных доменов.

Длинный ответ

Основы взаимодействия с iFrame через postMessage

Когда страница и iFrame находятся на разных доменах, прямой доступ к DOM или функциям друг друга блокируется политикой same-origin. Для безопасного обмена данными используется API postMessage, встроенный в браузеры.

Как это работает

Отправка сообщения происходит через метод postMessage целевого окна. Родитель обращается к iFrame через iframe.contentWindow, а iFrame — к родителю через window.parent. Вторым аргументом передаётся ожидаемый origin для безопасности.

// Родительская страница отправляет сообщение в iFrame
const iframe = document.getElementById('myIframe');
iframe.contentWindow.postMessage({ action: 'update', data: 'hello' }, 'https://child-domain.com');

// В iFrame слушаем сообщение
window.addEventListener('message', (event) => {
  if (event.origin !== 'https://parent-domain.com') return;
  console.log('Получено:', event.data);
  // Отправляем ответ
  event.source.postMessage({ response: 'ok' }, event.origin);
});

Практическое применение

Этот подход используется для виджетов, встраиваемых платёжных форм, чатов поддержки и любых микросервисных интерфейсов, где части UI живут на разных доменах. Важно всегда проверять event.origin, чтобы не допустить утечки данных.

Вывод

postMessage — единственный стандартный способ кросс-доменного общения с iFrame. Он безопасен при правильной валидации origin и подходит для любых сценариев, где нужен обмен данными между окнами из разных источников.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    4

  • Сложность:

    5

Навыки

  • JavaScript

    JavaScript

  • HTML

    HTML

Ключевые слова

#postMessage

#iframe

#cross-origin

#window messaging

#event listener

Подпишись на React Developer в телеграм

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию