В соответствии с ответом Тима Дауна , но используя jQuery
(упомянутое ОП) и свободно связывая содержащую страницу и фрейм, вы можете сделать следующее:
Вiframe:
<script>
$(function() {
var w = window;
if (w.frameElement != null
&& w.frameElement.nodeName === "IFRAME"
&& w.parent.jQuery) {
w.parent.jQuery(w.parent.document).trigger('iframeready');
}
});
</script>
На странице, содержащей:
<script>
function myHandler() {
alert('iframe (almost) loaded');
}
$(document).on('iframeready', myHandler);
</script>
iframe запускает событие в (потенциально существующем) документе родительского окна - пожалуйста, имейте в виду, что родительскому документу нужен jQueryэкземпляр сам по себе, чтобы это работало.Затем в родительском окне вы присоединяете обработчик для реагирования на это событие.
Преимущество этого решения заключается в том, что он не ломается, если содержащая страница не содержит ожидаемого обработчика загрузки.В более общем смысле, iframe не должен беспокоиться о том, чтобы знать окружающую среду.
Обратите внимание, что мы используем событие готовности DOM для запуска события - что должно подходить для большинства случаев использования.случаев.Если это не так, просто присоедините строку запуска события к событию загрузки окна следующим образом:
$(window).on('load', function() { ... });