Как подключить событие onload для тела с помощью JS в браузере? Насколько это просто?
document.body.onload = function(){
alert("LOADED!");
}
Как подключить событие onload для тела с помощью JS в браузере? Насколько это просто?
document.body.onload = function(){
alert("LOADED!");
}
Это использует 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;
Почему бы не использовать window
собственное событие onload
?
window.onload = function () {
alert("LOADED!");
}
Если я не ошибаюсь, это совместимо во всех браузерах.
Событие Cross Browser window.load
function load(){}
window[ addEventListener ? 'addEventListener' : 'attachEvent' ]( addEventListener ? 'load' : 'onload', load )
document.body.onload
- это кросс-браузер, но унаследованный механизм, который позволяет только один обратный вызов (вы не можете назначить ему несколько функций).
Ближайшая "стандартная" альтернатива addEventListener
не поддерживается Internet Explorer (она использует attachEvent
), поэтому вы будете вероятно, захотят использовать библиотеку (jQuery, MooTools, prototype.js и т.д.), чтобы отвлечь вас от кроссбраузерного уродства.
jcalfee314 работала для меня - у меня был window.onload = onLoad
, что означало, что функции в <body onload="...">
не вызывались (что у меня нет контроля).
Это зафиксировало это:
oldOnLoad = window.onload
window.onload = onLoad;
function onLoad()
{
oldOnLoad();
...
}
Изменить: Firefox не понравился oldOnLoad = document.body.onload;
, поэтому его заменили на oldOnLoad = window.onload
.
Существует несколько различных методов, которые вы должны использовать для разных браузеров. Библиотеки, такие как jQuery, предоставляют вам кросс-браузерный интерфейс, который обрабатывает все это для вас.
Почему бы не использовать jQuery?
$(document).ready(function(){}))
Насколько я знаю, это идеальное решение.