#javascript #html #dom
#javascript #HTML #dom
Вопрос:
Я знаю, что IE поддерживает onreadystatechange
атрибут в object
теге, но это, похоже, не является стандартным способом, поэтому все другие браузеры его не поддерживают.
Обновление: чтобы уточнить, я не ищу событие загрузки DOM, я ищу событие загрузки самого object
тега (например object
, тега, встраивающего файл PDF в страницу).
В некотором смысле, я ищу что-то похожее на img
onload
событие / complete
атрибут для object
тега.
Комментарии:
1. Вы только что сделали мой ответ неактуальным с этим редактированием
2. Кто-нибудь? Или это действительно просто невозможно на данный момент?
3.
complete
это событие ?! Разве это не флаг, сообщающий вам, завершена загрузка изображения или нет?4. извините, я имел в виду атрибут события / завершения загрузки. Обновленный вопрос. Спасибо за предупреждение.
5. Смогли ли вы найти решение для этого?
Ответ №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 /
Комментарии:
1. это не кроссбраузерное, мое первоначальное тестирование sniff показало, что вы правы, но я действительно не тестировал его. Я боюсь, что это может иметь те же результаты, что и ответ RASG.
2. Насколько я тестирую, Chrome не запускает событие onload при изменении и загрузке объекта src.
3. Просто из будущего в 2019 году: Chrome больше не запускает
onload
событие, когда что-то загружается в<object>
элемент.
Ответ №2:
Итак, вы хотите запустить событие после загрузки объекта [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
Чтобы убедиться, что он работает, я добавил в iframe файл формата PDF на 36 страниц, чтобы вы могли следить за индикатором выполнения (по крайней мере, в FF7 он есть, не уверен насчет Chrome), и после его полной загрузки вы увидите предупреждение.
Почему? Потому что .метод загрузки из jQuery будет ждать, пока не будут загружены все подэлементы внутри iframe.
Событие загрузки отправляется элементу, когда он и все подэлементы полностью загружены. Это событие может быть отправлено любому элементу, связанному с URL: изображениям, скриптам, фреймам, iframes и объекту window.
Если вы хотите попробовать более одного раза, очистите кеш.
Или измените PDF на больший, например http://pubs.usgs.gov/tei/532/report.pdf (90 страниц).
Комментарии:
1. Я знаю о onreadystatechange в IE. похоже, что onload не работает в последней версии FF. Также, когда я пытаюсь: var object = document.createElement(‘object’); console.log(‘onload’ в object); Я получаю false.
2. Протестировал ваш образец в Chrome с четвертой ссылкой (pdf). Событие происходит при загрузке iframe, как ожидалось, а не после загрузки PDF, как вы сказали.
3. @Hyangelo Еще одна попытка. Теперь с jQuery. Пожалуйста, проверьте это.
4. Не работает с последними версиями Chrome (14.0.835), Firefox (8.0) и IE9. Предупреждение появилось ЕЩЕ ДО того, как PDF-файл начал загружаться. Предупреждение вообще не отображалось в других браузерах.
5. жаль слышать, что у вас это не сработало, но поверьте мне, пример работает так, как ожидалось. может быть, кто-то еще может это протестировать.
Ответ №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>Сообщение будет отображено после завершения запроса.
Комментарии:
1. Нет, это ничего не решает. Объект загружает данные (скажем, PDF или flash). Что мне нужно, так это событие, когда эти данные были полностью загружены.