Dołącz Zdarzenie body onload za pomocą JS
Jak załączyć Zdarzenie body onload z JS w sposób między przeglądarkowy? Takie proste?
document.body.onload = function(){
alert("LOADED!");
}
7 answers
To wykorzystuje DOMContentLoaded-który uruchamia się przed załadowaniem - ale pozwala trzymać się w całej swojej dyskretności...
Okno.onload-Dean Edwards - post na blogu mówi więcej o tym - a Oto kompletny kod skopiowany z komentarzy tego samego bloga.
// 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;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-05 22:11:11
Dlaczego nie użyć window
własnego onload
zdarzenia ?
window.onload = function () {
alert("LOADED!");
}
Jeśli się nie mylę, jest to kompatybilne we wszystkich przeglądarkach.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-05 22:08:11
Cross browser window.load event
function load(){}
window[ addEventListener ? 'addEventListener' : 'attachEvent' ]( addEventListener ? 'load' : 'onload', load )
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-14 11:55:08
document.body.onload
jest cross-browser, ale starszy mechanizm, który pozwala tylko jeden callback (nie można przypisać wiele funkcji do niego).
Najbliższa" standardowa " alternatywa, addEventListener
nie jest obsługiwany przez Internet Explorer( używa attachEvent
), więc prawdopodobnie będziesz chciał użyć biblioteki (jQuery, MooTools, prototype.js itp.) do abstrakcji brzydoty między przeglądarkami dla Ciebie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-26 19:44:32
Pomysł Jcalfee314 zadziałał dla mnie - miałem window.onload = onLoad
, co oznaczało, że funkcje w <body onload="...">
nie były wywoływane (nad czym nie mam kontroli).
To naprawiło:
oldOnLoad = window.onload
window.onload = onLoad;
function onLoad()
{
oldOnLoad();
...
}
Edit: Firefox nie spodobał się oldOnLoad = document.body.onload;
, więc zastąpiony przez oldOnLoad = window.onload
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-21 17:22:04
Istnieje kilka różnych metod, których musisz użyć dla różnych przeglądarek. Biblioteki takie jak jQuery zapewniają interfejs między przeglądarkami, który obsługuje to wszystko za Ciebie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-05 22:02:40
Dlaczego nie używać jQuery?
$(document).ready(function(){}))
Z tego co wiem, to idealne rozwiązanie.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-10 12:59:48