Существует ли межблочное стандартное событие on-load для тега HTML-объекта?
Мне известно, что IE поддерживает атрибут onreadystatechange
в теге object
, но это не похоже на стандартный способ, поэтому все другие браузеры его не поддерживают.
Обновление. Чтобы уточнить, я не ищу событие DOM Load, я ищу событие загрузки самого тега object
(например, тег object
, вставляющий PDF файл на страницу).
В некотором смысле, я ищу что-то похожее на атрибут img
onload
event/complete
для тега object
.
Ответы
Ответ 1
Атрибут <object onload>
хорошо работает в последних версиях Firefox, Chrome и Opera (я только что протестировал его).
Кроме того, выражение 'onload' in document.createElement('object')
оценивается как true
в Chrome и Opera; Естественно, Firefox является исключением, поскольку такая проверка поддержки событий там вообще не работает. kangax описывает обнаружение поддержки кросс-браузера в http://perfectionkills.com/detecting-event-support-without-browser-sniffing/
Ответ 2
Итак, вы хотите инициировать событие после загрузки объекта [PDF]?
Если это так, это может помочь вам:
http://www.webdeveloper.com/forum/showthread.php?t=160792
----- EDITED [19/10/2011] -----
Если вы загружаете PDF внутри iframe, он будет работать.
Проверьте это: http://sykari.net/stuff/iframe
script будет оповещать только после, что PDF файл полностью загружен.
(Протестировано с помощью FF7 + Win7).
----- EDITED [20/10/2011] -----
Использование JQuery: http://jsfiddle.net/fcABz
Чтобы убедиться, что он работает, я добавил файл PDF на 36 страниц в iframe, так что вы можете наблюдать за индикатором выполнения (по крайней мере, в FF7 есть один, не уверенный в Chrome), и после того, как он полностью вы увидите предупреждение.
Почему? Поскольку метод .load из JQuery будет ждать загрузки всех подэлементов внутри iframe.
Событие load отправляется элементу, когда он и все подэлементы полностью загружены. Это событие может быть отправлено любому элементу, связанному с URL-адресом: изображениями, сценариями, фреймами, iframes и объектом окна.
Если вы хотите попробовать более одного раза, очистите кеш.
Или измените PDF на более крупный, например http://pubs.usgs.gov/tei/532/report.pdf (90 страниц).
Ответ 3
Я не уверен, что вы можете сделать это, просто используя атрибуты объекта.
Посмотрите на это:
-
Вы можете попробовать что-то, используя 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>
Сообщение будет отображаться после завершения запроса.