Существует ли стандартное кроссбраузерное событие загрузки для тега HTML «object»?

#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). Что мне нужно, так это событие, когда эти данные были полностью загружены.