Как вызвать событие, когда загрузка фрейма завершена в jQuery? - PullRequest
93 голосов
/ 27 августа 2008

Мне нужно загрузить PDF на странице.

В идеале я хотел бы получить загрузочный анимированный GIF, который будет заменен после загрузки PDF.

Ответы [ 13 ]

0 голосов
/ 23 мая 2015

Если вы ожидаете, что интерфейс браузера будет открыт для пользователя после завершения загрузки, вы можете запустить его при запуске загрузки:

$( document ).blur( function () {
    // Your code here...
});

Когда диалоговое окно появляется в верхней части страницы, срабатывает событие размытия.

0 голосов
/ 21 марта 2013

Мне нужно было показать загрузчик, пока загружается pdf в iFrame, так что я придумаю:

    loader({href:'loader.gif', onComplete: function(){
            $('#pd').html('<iframe onLoad="loader.close();" src="pdf" width="720px" height="600px" >Please wait... your report is loading..</iframe>');
    }
    });

Я показываю загрузчик. Как только я уверен, что клиент может видеть мой загрузчик, я вызываю метод загрузчиков onCompllet, который загружает iframe. У Iframe есть событие onLoad. Как только PDF загружен, он запускает событие onloat, где я прячу загрузчик:)

Важная часть:

В iFrame есть событие «onLoad», где вы можете делать то, что вам нужно (скрывать загрузчики и т. Д.)

0 голосов
/ 19 ноября 2008

Вот что я делаю для любого действия, и оно работает в Firefox, IE, Opera и Safari.

<script type="text/javascript">
  $(document).ready(function(){
    doMethod();
  });
  function actionIframe(iframe)
  {
    ... do what ever ...
  }
  function doMethod()
  {   
    var iFrames = document.getElementsByTagName('iframe');

    // what ever action you want.
    function iAction()
    {
      // Iterate through all iframes in the page.
      for (var i = 0, j = iFrames.length; i < j; i++)
      {
        actionIframe(iFrames[i]);
      }
    }

    // Check if browser is Safari or Opera.
    if ($.browser.safari || $.browser.opera)
    {
      // Start timer when loaded.
      $('iframe').load(function()
      {
        setTimeout(iAction, 0);
      }
      );

      // Safari and Opera need something to force a load.
      for (var i = 0, j = iFrames.length; i < j; i++)
      {
         var iSource = iFrames[i].src;
         iFrames[i].src = '';
         iFrames[i].src = iSource;
      }
    }
    else
    {
      // For other good browsers.
      $('iframe').load(function()
      {
        actionIframe(this);
      }
      );
    }
  }
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...