Как отложить вызов функции JavaScript? - PullRequest
29 голосов
/ 06 апреля 2011

Я новичок в JavaScript.

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

Я пытался использовать <form onload="function()"> и window.load = function(){}, но JavaScript все еще срабатывает до полной загрузки некоторого содержимого.

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

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

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

Ответы [ 5 ]

70 голосов
/ 06 апреля 2011

setTimeout совместим со всеми браузерами с 1996 года. Вам следует избегать оценки "functionName ()" и вместо этого делать:

setTimeout(functionName,5000)

ОБНОВЛЕНИЕ: Если вы изначально ожидалипеременная, передаваемая в функцию и ни одна из которых в течение тайм-аута, вам нужно сделать это вместо этого:

setTimeout(function() { functionName() },5000)

, потому что setTimeout передаст ID тайм-аута функции, если он вызывается, как в первом примере.

Однако вы неправильно набираете onload, поэтому вам нужно сделать следующее:

window.onload=function() {
  // your stuff
}

или, поскольку вы используете jQuery , это:

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

или просто так:

$(function() {
    // your stuff
});
5 голосов
/ 06 апреля 2011

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

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

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

3 голосов
/ 06 апреля 2011

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

$(document).ready(callback);

или

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

$(callback);

или

$(function () { /* do stuff */ });
1 голос
/ 06 апреля 2011
$(document).ready(function(){ 

   //Code goes here

});

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

<body onload="myFunction()">
0 голосов
/ 06 апреля 2011

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

$(document).ready(function() {

});

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...