Как отсрочить вызов функции javascript?

Я новичок в JavaScript.

Я хотел бы вызвать функцию JavaScript/jQuery после загрузки страницы на странице aspx.

Я попытался использовать

и window.load = function(){}, но JavaScript все еще запускается до того, как часть содержимого будет полностью загружена.

Можно ли вызывать во время Page_PreRender на странице aspx, а не в коде, так что я могу задержать функцию JavaScript?

Я попробовал setTimeout("function()",5000) решить проблему.

Однако setTimeout() похоже, не совместим с каким-либо браузером, например: вызвал цикл в Google Chrome.

5 ответов

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
});


Если вы хотите быть на 100% уверенным, что при загрузке страницы ACTUALLY используйте:

$(window).load(function(){
 //After EVERYTHING loads, including images.
})

Другое решение onload работает, но оно загружается, когда DOM готов, но не тогда, когда окно действительно завершено.


Если вы собираетесь использовать jQuery, предпочтительнее присоединить событие к событию готовности документа, используя одно из следующих действий:

$(document).ready(callback);

или

$(document).ready(function () { /* do stuff */ });

или

$(callback);

или

$(function () { /* do stuff */ });


$(document).ready(function(){ 
 //Code goes here
});

или старый стиль


Лучше всего использовать фреймворк, например jQuery. В jQuery вы можете определить такую ​​функцию:

$(document).ready(function() {
});

Таким образом, он будет вызываться, когда DOM будет полностью загружен.

Полную документацию о функции ready() можно найти здесь.

licensed under cc by-sa 3.0 with attribution.