Существуют ли универсальные альтернативы window.onload без использования фреймворков? - PullRequest
4 голосов
/ 09 июня 2011

В предыдущий вопрос Я узнал об ошибке в моем JavaScript, связанной с использованием appendChild в элементе BODY, до того, как было вызвано событие DOMReady.

Мне удалось устранить это путем переносамой код в событии window.onload.Читая об этом, я узнал, что window.onload поддерживает только одного слушателя, и я не могу гарантировать, что я не бью чьего-то слушателя, или что чей-то слушатель не бьет моего.

Глядя наИсходя из $(document).ready(function(){});, я понимаю, что, возможно, многое объясняется простотой этого синтаксиса.

Есть ли для меня универсальный способ ожидания события DOMReady без использования jQuery или другой библиотеки JS?Хотя кажется, что это поможет, я бы предпочел не иметь никаких зависимостей от сторонней библиотеки, чтобы мой код работал правильно.

Ответы [ 2 ]

5 голосов
/ 09 июня 2011

Вы можете сделать что-то вроде:

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

addLoadEvent(nameOfSomeFunctionToRunOnPageLoad);
addLoadEvent(function() {
  /* more code to run on page load */
});

, который оборачивает существующий onload в новую функцию с дополнительной функцией. Это взято из http://www.webreference.com/programming/javascript/onloads/

Тем не менее, для выполнения этого на готовом документе, а не на загрузке (разные вещи, когда загрузка загружается, когда все готово, когда документ загружается) посмотрите на этот вопрос : $ (документ). Уже эквивалентен без jQuery

1 голос
/ 09 июня 2011

Вы можете использовать:

document.onpageshow= new function() {
//(Code here)
}

Вы также можете заменить «onpageshow» на «onload» для лучшей совместимости.

Это также может быть полезно: https://developer.mozilla.org/en/DOM/element.addEventListener

...