Существует ли кросс-браузерное стандартное событие загрузки для тега HTML «объект»? - PullRequest
23 голосов
/ 13 октября 2011

Мне известно, что IE поддерживает атрибут onreadystatechange для тега object, но это не является стандартным способом, поэтому все другие браузеры его не поддерживают.

Обновление: доуточнить, я не ищу событие загрузки DOM, я ищу событие загрузки самого тега object (например, тег object, внедряющий файл PDF в страницу).

ВКстати, я ищу что-то похожее на img 'onload event / complete атрибут для тега object.

Ответы [ 3 ]

5 голосов
/ 23 октября 2011

Атрибут <object onload> хорошо работает в последних версиях Firefox, Chrome и Opera (я только что его протестировал).

Кроме того, выражение 'onload' in document.createElement('object') оценивается как true в Chrome и Opera;Естественно, Firefox - исключение, потому что такая проверка поддержки событий там вообще не работает.Кангакс описывает кросс-браузерное обнаружение поддержки событий на http://perfectionkills.com/detecting-event-support-without-browser-sniffing/

1 голос
/ 17 октября 2011

То есть вы хотите вызвать событие после загрузки объекта [PDF]?
Если это так, это может помочь вам:

http://www.webdeveloper.com/forum/showthread.php?t=160792

----- РЕДАКТОР [19/10/2011] -----

Если вы загрузите PDF-файл внутри iframe, он будет работать.

Проверьте это: http://sykari.net/stuff/iframe

Сценарий будет предупреждать только после PDF полностью загружен.
(Проверено с FF7 + Win7).

----- отредактировано [20/10/2011] -----

Использование JQuery: http://jsfiddle.net/fcABz

Чтобы убедиться, что он работает, я добавил файл PDF на 36 страниц в iframe, чтобы вы могли наблюдать за индикатором выполнения (по крайней мере, в FF7 он есть, не уверен насчет Chrome), и после того, как он полностью загружен, вы увидите предупреждение.

Почему? Поскольку метод .load из JQuery будет ожидать загрузки всех подэлементов внутри iframe.

Событие load отправляется элементу, когда it и все подэлементы полностью загружены. Это событие может быть отправлено любому элементу, связанному с URL: изображения, сценарии, фреймы, iframes и объект окна.

Если вы хотите попробовать более одного раза, очистите кеш.
Или измените PDF на больший, например, http://pubs.usgs.gov/tei/532/report.pdf (90 страниц).

0 голосов
/ 18 октября 2011

Я не уверен, что вы можете сделать это, просто используя атрибуты объекта.

Посмотрите на это:

  • Вы можете попробовать что-то, используя onreadystatechange

    Когда данные хорошо загружены, readyState==4 и xmlhttp.status==200

  • Вы можете попробовать использовать функцию загрузки jQuery :

    Экспортируйте <object/> на странице с именем object.html.

    На вашей главной странице есть:

    <div id="theObject"></div> <script> $("#theObject").load("object.html", function(response, status, xhr) { alert('Loaded : '+status);}); </script>

    Сообщение будет отображаться после завершения запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...