Я вижу две базовые ошибки в вашем коде. Прежде всего, если вы хотите передать функцию в качестве аргумента, вам нужно написать имя функции без скобок; если вы добавите скобки, функция будет выполнена прямо тогда. Смотрите пример:
function foo(){
alert("I am foo");
}
function bar(){
alert("I am bar");
}
setTimeout(foo, 5000);
setTimeout(bar(), 10000);
Во-вторых, если вы присвоите значение атрибуту .onload
с помощью оператора =
, вы перезапишете его предыдущее значение, так же как a = 3
перезапишет предыдущее значение a
.
function foo(){
alert("I am foo");
}
function bar(){
alert("I am bar");
}
window.onload = foo;
window.onload = bar;
Исходя из того, что я понимаю, ваша главная проблема в том, чтобы иметь возможность добавлять вместо замены обработчиков событий. Как обычно, нет универсального API, который можно безопасно использовать во всех браузерах. Если вы используете фреймворк или библиотеку, это, вероятно, обеспечивает кросс-браузерный механизм. В противном случае вам нужно найти или написать свой собственный. В прошлом я использовал это в нескольких проектах:
... хотя он не обновлялся с 2005 года, поэтому я должен убедиться, что он работает должным образом в последних браузерах.