TGViewer
Frontend | Вопросы собесов Frontend | Вопросы собесов @easy_javascript_ru · 17.7K subscribers
Post #2630 2.13K
🤔 Как общаться между iframe и самой страницой?

Общение между iframe и родительской страницей может происходить с помощью:
Метода postMessage (лучший способ)
Доступа к window.frames или window.parent (если тот же домен)
Передачи данных через localStorage или cookies

🟠`postMessage` – безопасный способ для разных доменов
Метод window.postMessage() позволяет передавать сообщения между разными окнами (iframe, popup, другие вкладки) даже если они на разных доменах.

🚩Передача данных из `iframe` в родительскую страницу

*Код в iframe (child.html)
// Отправляем сообщение родительскому окну
window.parent.postMessage({ type: "hello", data: "Привет, родитель!" }, "*");


Код в родительской странице (index.html)
window.addEventListener("message", (event) => {
console.log("Получено сообщение от iframe:", event.data);
});


* в postMessage означает, что сообщение отправляется любому домену. Лучше указывать конкретный, например:
window.parent.postMessage({ type: "hello" }, "https://example.com");


🚩Передача данных из родителя в `iframe`

Код в родительской странице (index.html)
const iframe = document.getElementById("myIframe");

// Ждём, когда iframe загрузится
iframe.onload = () => {
iframe.contentWindow.postMessage({ type: "greeting", data: "Привет, iframe!" }, "*");
};


Код в iframe (child.html)
window.addEventListener("message", (event) => {
console.log("Получено сообщение от родителя:", event.data);
});


🚩Доступ к `window.frames` и `window.parent` (только если тот же домен!)

Если iframe и основная страница находятся на одном домене, можно обращаться к их window напрямую.
Родительская страница → iframe
const iframe = document.getElementById("myIframe");

// Получаем объект `window` внутри `iframe`
iframe.contentWindow.document.body.style.backgroundColor = "lightblue";


iframe → Родительская страница
console.log(window.parent.document.title); // Доступ к заголовку страницы


🚩`localStorage` или `cookies` (если оба окна на одном домене)

Можно сохранять данные в localStorage или cookies, а другая сторона будет их читать.
Запись в localStorage из iframe
localStorage.setItem("message", "Привет от iframe!");


Чтение localStorage в родительской странице
console.log(localStorage.getItem("message")); // "Привет от iframe!"


Ставь 👍 и забирай 📚 Базу знаний
  • 👍 6
  • 🔥 1
  • 💊 1
More from @easy_javascript_ru
  1. Oct 2, 2026Post #3005
  2. Oct 2, 2026🤔 Какие статические методы promise знаешь? Promise – это объект, представляющий отложенны…
  3. Oct 1, 2026Post #3003
  4. Oct 1, 2026🤔 Как добавить слушатель события? Это важный аспект работы с веб-приложениями, так как по…
  5. Sep 30, 2026🤔 Что такое макро и микро задачи? Макро- и микро-задачи являются частью механизма асинхро…
  6. Sep 29, 2026🤔 Зачем создавать самовызывающуюся функцию, если есть создание контекста через фигурные с…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →