Определить, полностью ли загружена страница встраивания из iframe

#javascript #iframe #event-handling #addeventlistener

#javascript #iframe #обработка событий #addeventlistener

Вопрос:

Я хочу отправить сообщение post из iframe, когда страница встраивания полностью загружена. Как я могу определить, так ли это, изнутри iframe?

Я уже пробовал использовать EventListener для «DOMContentLoaded»

 document.addEventListener("DOMContentLoaded", postMessageFunctionCall);
  

Но он не реагирует на событие от родительского элемента.
Есть ли возможность отреагировать на это событие изнутри iframe?

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

1. Имеют ли они одно и то же происхождение?

2. Да, они из одного источника

Ответ №1:

Если страница и iframe одного и того же источника, вы можете перехватить событие через parent :

 parent.document.addEventListener("DOMContentLoaded", postMessageFunctionCall);
  

Однако это не будет работать с перекрестным источником.

Поскольку это устанавливает условие гонки, вы можете сначала проверить readyState документ:

 if (parent.document.readyState !== "loading") {
    postMessageFunctionCall();
} else {
    parent.document.addEventListener("DOMContentLoaded", postMessageFunctionCall);
}