#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);
}