Как сказал Myforwik, событие, которое вы подключаете с помощью window.onload = ...;
, является тем же событием, с которым вы подключаетесь <body onload="...">
. Это событие window
load
. Оба эти способа подключены к старому стилю DOM0, который давно устарел. Если вы укажете оба, последний выиграет, нокаутируя первый. То же самое верно, если несколько сценариев устанавливают window.onload
независимо.
Чтобы избежать подобных проблем, используйте перехват событий в стиле DOM2:
if (window.addEventListener) {
// DOM2 standard
window.addEventListener("load", handler, false);
}
else if (window.attachEvent) {
// Microsoft's precursor to it, IE8 and earlier
window.attachEvent("onload", handler);
}
else {
// Some pre-1999 browser
window.onload = handler;
}
function handler() {
}
Несколько обработчиков DOM2 могут быть присоединены к одному и тому же событию, поэтому на него могут подписаться несколько несвязанных сценариев. Кроме того, обработчики DOM2 успешно сосуществуют с обработчиками DOM0.
Таким образом, если вы обновите свой пользовательский скрипт, чтобы использовать вышеуказанное, страница <body onload="...">
не будет затронута.