Как отсрочить вызов функции javascript?
Я новичок в JavaScript.
Я хотел бы вызвать функцию JavaScript/jQuery после загрузки страницы на странице aspx.
Я попытался использовать <form onload="function()">
и window.load = function(){}
, но JavaScript все еще запускается до того, как часть содержимого будет полностью загружена.
Можно ли вызывать во время Page_PreRender
на странице aspx, а не в коде, так что я могу задержать функцию JavaScript?
Я попробовал setTimeout("function()",5000)
решить проблему.
Однако setTimeout()
похоже, не совместим с каким-либо браузером, например: вызвал цикл в Google Chrome.
Ответы
Ответ 1
setTimeout
совместим со всеми браузерами с 1996 года. Вы должны избегать оценки "functionName()" и вместо этого:
setTimeout(functionName,5000)
UPDATE: Если вы ожидаете, что переменная будет передана функции, а в тайм-ауте - нет, то вам нужно сделать это:
setTimeout(function() { functionName() },5000)
потому что setTimeout передает идентификатор тайм-аута функции, если он вызывается как в первом примере.
Однако вы неправильно вызываете onload
, поэтому вам нужно сделать следующее:
window.onload=function() {
// your stuff
}
или, поскольку вы используете jQuery, это:
$(document).ready(function() {
// your stuff
});
или только это:
$(function() {
// your stuff
});
Ответ 2
Если вы хотите быть на 100% уверенным, что при загрузке страницы ACTUALLY используйте:
$(window).load(function(){
//After EVERYTHING loads, including images.
})
Другое решение onload
работает, но оно загружается, когда DOM готов, но не тогда, когда окно действительно завершено.
Ответ 3
Если вы собираетесь использовать jQuery, предпочтительнее присоединить событие к событию готовности документа, используя одно из следующих действий:
$(document).ready(callback);
или
$(document).ready(function () { /* do stuff */ });
или
$(callback);
или
$(function () { /* do stuff */ });
Ответ 4
$(document).ready(function(){
//Code goes here
});
или старый стиль
<body onload="myFunction()">
Ответ 5
Лучше всего использовать фреймворк, например jQuery.
В jQuery вы можете определить такую функцию:
$(document).ready(function() {
});
Таким образом, он будет вызываться, когда DOM будет полностью загружен.
Полную документацию о функции ready() можно найти здесь.