Последовательность выполнения события загрузки JavaScript

#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 привязано первым. Все еще не уверен.