Нажмите кнопку на событии загрузки
У меня есть следующий JavaScript -
function onLoad() {
if (!(document.applets && document.VLVChart && document.VLVChart.isActive())) {
setTimeout('onLoad()', 200);
return;
}
objChart = document.VLVChart;
PollEvent();
}
function fan() {
objChart.reorganize();
}
А потом, когда HTML-страница загружена -
<body onLoad="onLoad()">
и есть кнопка в HTML, которая выполняет fan()
функция -
<input type='button' value='Fan' onClick='fan();'>
Могу ли я активировать fan()
функция в событии onload, так что пользователю не нужно нажимать кнопку?
РЕДАКТИРОВАТЬ После попытки предоставления ответов, при отладке код разрывается на строку -
objChart.reorganize();
В пределах fan()
функция с ошибкой -
SCRIPT5007: Unable to get value of the property 'reorganize': object is null or undefined
Это странно, так как, когда я вручную нажимаю кнопку на странице, функция работает нормально.
Решение После большого царапания головы я понял, что пытался загрузить fan()
функционировать до полной загрузки страницы (а точнее, objChart). Следовательно, почему добавление функции в onLoad
событие не работало. Я добавил setTimeout
-
function Fan()
{
setTimeout(function(){objChart.reorganize();},3000);
}
3 ответа
<body onload='onLoad(); fan();'>...
Однако лучше избегать встроенного JS, и вам стоит начать изучать централизованное управление событиями. Есть различные преимущества для этого.
Ответ, который я написал вчера на другой вопрос, объясняет, почему это так. Что-то вроде jQuery делает это тривиальным, если это ново для вас.
$(function() {
$('body').on('load', function() {
onLoad();
fan();
});
});
Читая ваш вопрос, я предполагаю, что вы даже не пытались. Просто вызовите эту функцию изнутри вашего onLoad()
-функции:
function onLoad()
{
fan();
/* … */
}
Да.
Ты можешь использовать <body onload='onLoad(); fan();'>
как предполагает Утканос.
Если вы используете jQuery, вы также можете вставить скрипт в голову, содержащий:
$(function(){
...
});
Функция jQuery на самом деле срабатывает раньше, как объясняется здесь.