Подтвердить что ты не робот

Прикрепите событие onload для тела с помощью JS

Как подключить событие onload для тела с помощью JS в браузере? Насколько это просто?

  document.body.onload = function(){
      alert("LOADED!");
  }
4b9b3361

Ответ 1

Это использует DOMContentLoaded - который срабатывает перед загрузкой, но позволяет вам придерживаться всей вашей ненавязчивости...

window.onload - Дин Эдвардс - Сообщение в блоге больше об этом говорит - и вот полный код, скопированный из комментариев того же блог.

// Dean Edwards/Matthias Miller/John Resig

function init() {
  // quit if this function has already been called
  if (arguments.callee.done) return;

  // flag this function so we don't do the same thing twice
  arguments.callee.done = true;

  // kill the timer
  if (_timer) clearInterval(_timer);

  // do stuff
};

/* for Mozilla/Opera9 */
if (document.addEventListener) {
  document.addEventListener("DOMContentLoaded", init, false);
}

/* for Internet Explorer */
/*@cc_on @*/
/*@if (@_win32)
  document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");
  var script = document.getElementById("__ie_onload");
  script.onreadystatechange = function() {
    if (this.readyState == "complete") {
      init(); // call the onload handler
    }
  };
/*@end @*/

/* for Safari */
if (/WebKit/i.test(navigator.userAgent)) { // sniff
  var _timer = setInterval(function() {
    if (/loaded|complete/.test(document.readyState)) {
      init(); // call the onload handler
    }
  }, 10);
}

/* for other browsers */
window.onload = init;

Ответ 2

Почему бы не использовать window собственное событие onload?

window.onload = function () {
      alert("LOADED!");
}

Если я не ошибаюсь, это совместимо во всех браузерах.

Ответ 3

Событие Cross Browser window.load

function load(){}

window[ addEventListener ? 'addEventListener' : 'attachEvent' ]( addEventListener ? 'load' : 'onload', load )

Ответ 4

document.body.onload - это кросс-браузер, но унаследованный механизм, который позволяет только один обратный вызов (вы не можете назначить ему несколько функций).

Ближайшая "стандартная" альтернатива addEventListener не поддерживается Internet Explorer (она использует attachEvent), поэтому вы будете вероятно, захотят использовать библиотеку (jQuery, MooTools, prototype.js и т.д.), чтобы отвлечь вас от кроссбраузерного уродства.

Ответ 5

Идея

jcalfee314 работала для меня - у меня был window.onload = onLoad, что означало, что функции в <body onload="..."> не вызывались (что у меня нет контроля).

Это зафиксировало это:

oldOnLoad = window.onload
window.onload = onLoad;

function onLoad()
{
oldOnLoad();
...
}

Изменить: Firefox не понравился oldOnLoad = document.body.onload;, поэтому его заменили на oldOnLoad = window.onload.

Ответ 6

Существует несколько различных методов, которые вы должны использовать для разных браузеров. Библиотеки, такие как jQuery, предоставляют вам кросс-браузерный интерфейс, который обрабатывает все это для вас.

Ответ 7

Почему бы не использовать jQuery?

$(document).ready(function(){}))

Насколько я знаю, это идеальное решение.