У меня есть video
элемент и сценарий, который присоединяет onplay
обработчик видео с помощью JQuery:Может ли события DOM запускаться до запуска моего скрипта?
<video id="vid" />
<!-- ... -->
<script type="text/javascript">
$('#vid').on('play', function() {
$(this).addClass('playing');
});
</script>
Согласно this answer, пользователей может быть в состоянии взаимодействовать с видеоплеером до загрузки сценария. Но мне нужно убедиться, что мой обработчик событий прикреплен до того, как событие onplay
может быть запущено.
Чтобы проверить это, я добавил скрипт сразу после video
, который вызывает play()
. Обработчик запускается во всех основных браузерах, кроме WebKit, который вообще не воспроизводит видео. Даже перенос оператора jQuery в функцию $().ready()
по-прежнему позволяет привязать обработчик до onplay
.
Гарантировано, что мой скрипт никогда не пропустит какие-либо события из видео в HTML5? То же самое относится ко всем событиям DOM? Что, если я добавлю async
к скрипту?
У меня были проблемы с переопределением события щелчка элемента привязки на iPad.Если я нажимаю элемент перед его визуализацией, он часто перемещается, даже несмотря на то, что мой обработчик событий всегда предотвращает действие по умолчанию. Я закончил тем, что сделал свою разметку не-js-friendly, так что это стало проблемой. – Timothy003
Я возвращаюсь к этому вопросу три года спустя, потому что Chrome запускает события 'error' на элементах' source', прежде чем мой скрипт сможет присоединить обработчик событий. Встроенный скрипт не гарантирует, что состояние гонки не произойдет; действительно, если я добавлю мегабайт пробелов внутри или перед скриптом, Chrome запустит цикл событий при загрузке пробелов. – Timothy003