Прикрепите событие onload для тела с помощью JS
Как подключить событие onload для тела с помощью JS в браузере? Насколько это просто?
document.body.onload = function(){
alert("LOADED!");
}
Ответы
Ответ 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(){}))
Насколько я знаю, это идеальное решение.