4 ответов:
<iframe>элементыloadсобытие для этого.
как вы слушаете это событие зависит от вас, но, как правило, лучший способ:
1) Создайте свой iframe программно
эта
loadслушатель всегда вызывается путем присоединения до iframe начинает загрузку.<script> var iframe = document.createElement('iframe'); iframe.onload = function() { alert('myframe is loaded'); }; // before setting 'src' iframe.src = '...'; document.body.appendChild(iframe); // add it to wherever you need it in the document </script>
2) встроенный javascript, еще один способ, что вы можете использовать внутри HTML-разметку.
<script> function onMyFrameLoad() { alert('myframe is loaded'); }; </script> <iframe id="myframe" src="..." onload="onMyFrameLoad(this)"></iframe>
3) Вы также можете прикрепить слушатель событий после элемента внутри
<script>тег, но имейте в виду, что в этом случае есть небольшая вероятность того, что iframe уже загружен к моменту добавления вашего слушателя. Поэтому вполне возможно, что это будет не вызывается (например, если iframe очень быстрый или поступает из кэша).<iframe id="myframe" src="..."></iframe> <script> document.getElementById('myframe').onload = function() { alert('myframe is loaded'); }; </script>
Также см. мой другой ответ о какие элементы также могут запускать этот тип
loadсобытие
ни один из ответов не работал для меня, однако это сделал
обновление:
Как @doppleganger указал ниже, загрузка исчезла с jQuery 3.0, так что вот обновленная версия, которая использует
on. Обратите внимание, что это действительно будет работать на jQuery 1.7+, поэтому вы можете реализовать его таким образом, даже если вы еще не на jQuery 3.0.$('iframe').on('load', function() { // do stuff });
вы также можете захватить jQuery ready событие таким образом:
$('#iframeid').ready(function () { //Everything you need. });вот пример:
есть еще один последовательный способ (только для IE9+) в ванильном JavaScript для этого:
const iframe = document.getElementById('iframe'); const handleLoad = () => console.log('loaded'); iframe.addEventListener('load', handleLoad, true)и если вы заинтересованы в параметры это делает трюк:
return Observable.fromEventPattern( handler => iframe.addEventListener('load', handler, true), handler => iframe.removeEventListener('load', handler) );
Comments