#jquery #firefox #javascript-events
#jquery #firefox #dom-события
Вопрос:
У меня есть следующий код:
//создайте вкладку и активируйте ее var tab = gBrowser.addTab("chrome://xxx/content/html/xxx.html "); gBrowser.selectedTab = вкладка переменная newTabBrowser = gBrowser.getBrowserForTab(gBrowser.selectedTab); newTabBrowser.addEventListener("загрузка", функция () { //событие 1. }, true);
где xxx.html имеет:
<script>
$(document).ready(function(){
//event 2
});
$(window).load(function(){
//event 3
});
</script>
Я понимаю, что событие 2 запускается перед событием 3.
И событие 1 запускается перед событием 3 по месту a alert()
, кто-нибудь может объяснить мне причину этого. Или последовательность 1 и 3 непредсказуемы.
Комментарии:
1. Небольшой вопрос.
addEventListener
привязывает только обработчик. Почему это срабатывает?2. Пожалуйста, смотрите: developer.mozilla.org/en/DOM/element.addEventListener
Ответ №1:
Не совсем уверен, что именно такое событие 1 — я предполагаю, что это плагин Firefox, поэтому он фактически запускается, как только загружается сама вкладка, а не документ внутри нее.
Событие 2 запустится, как только будет готов полный HTML DOM, но до загрузки всех внешних ресурсов (таких как изображения и таблицы стилей). Событие 3 запустится только после завершения загрузки всех внешних ресурсов.
Комментарии:
1. Событие 1 — это плагин Firefox. Центр документации MDN объясняет, что newTabBrowser.addEventListener(«load», функция (){}); используется «Если вы хотите поработать с содержимым недавно открытой вкладки, вам нужно дождаться завершения загрузки содержимого». У меня путаница из-за «содержимое завершило загрузку». Если содержимое означает HTML DOM и изображения и css, то я предполагаю, что событие 1 сработает до события 3, потому что событие 1 привязано первым. Все еще не уверен.