Назад к вопросам
Junior
72
questionbank

Как узнать, что iframe загрузился?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Существует несколько способов:

  1. Через событие load: Самый распространенный и надежный способ.

    const iframeElement = document.getElementById('myIframe');
    
    iframeElement.onload = function() {
      // Код, выполняющийся после загрузки iframe
      console.log('iframe загружен!');
    };
    
  2. Через атрибут onload в HTML:

    <iframe src="somepage.html" onload="iframeLoaded()"></iframe>
    
    <script>
    function iframeLoaded() {
      // Код после загрузки
      console.log('iframe загружен через атрибут onload!');
    }
    </script>
    
  3. Проверка состояния document.readyState внутри iframe (если у вас есть доступ к содержимому iframe):

    const iframeElement = document.getElementById('myIframe');
    
    iframeElement.onload = function() {
      const iframeDoc = iframeElement.contentDocument || iframeElement.contentWindow.document;
    
      if (iframeDoc.readyState === 'complete') {
        // Код после полной загрузки DOM внутри iframe
        console.log('iframe DOM загружен полностью!');
      }
    };
    

    Этот способ менее надежен для определения готовности всех ресурсов (изображений, скриптов) внутри iframe, load событие более подходящее для этого.

  4. Использование addEventListener: Более современный способ подписки на событие.

    const iframeElement = document.getElementById('myIframe');
    
    iframeElement.addEventListener('load', function() {
      // Код после загрузки iframe
      console.log('iframe загружен с использованием addEventListener!');
    });
    

Выбор спосоبا зависит от контекста и предпочтений, но событие load является наиболее универсальным и надежным для определения полной загрузки iframe, включая все его ресурсы.