Comment retarder l'appel de la fonction javascript?

Je suis nouveau en JavaScript.

Je voudrais appeler la fonction JavaScript / jQuery après le chargement de la page dans la page aspx.

J'ai essayé d'utiliser <form onload="function()"> et window.load = function(){}, mais le JavaScript est toujours déclenché avant qu'une partie du contenu soit complètement chargée.

Est-il possible d'appeler pendant Page_PreRender dans la page aspx et pas dans le code derrière, afin que je puisse retarder la fonction JavaScript ?

J'ai essayé setTimeout("function()",5000) de résoudre le problème.

Cependant setTimeout() semble ne pas être compatible avec certains navigateurs, par exemple: causé en boucle dans Google Chrome.

28
demandé sur radbyx 2011-04-06 20:48:17

5 réponses

setTimeout est compatible avec tous les navigateurs depuis 1996. Vous devriez éviter l'évaluation de "functionName ()" et faire à la place:

setTimeout(functionName,5000)

UPDATE: {[11] } Si vous attendez initialement une variable passée à la fonction et none dans le délai d'attente, vous devez le faire à la place:

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

Parce que setTimeout passera L'ID timeout à la fonction, si elle est appelée comme dans le premier exemple.

Cependant, vous appelez le onload de manière incorrecte, vous devez donc faire l'un ou l'autre ce:

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

Ou, puisque vous utilisez jQuery , ceci:

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

Ou juste ceci:

$(function() {
    // your stuff
});
70
répondu mplungjan 2016-04-25 07:51:06

Si vous voulez être sûr à 100% que c'est quand la page se charge réellement, utilisez:

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

La solution de l'autre, onload fonctionne, mais elle se charge une fois que le DOM est prêt, mais pas lorsque la fenêtre est réellement terminée.

5
répondu Oscar Godson 2011-04-06 16:56:14

Si vous utilisez jQuery, il est préférable de joindre un événement à l'événement document ready en utilisant l'une des options suivantes:

$(document).ready(callback);

Ou

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

Ou

$(callback);

Ou

$(function () { /* do stuff */ });
3
répondu Ken Browning 2011-04-06 16:55:32
$(document).ready(function(){ 

   //Code goes here

});

Ou ancien style

<body onload="myFunction()">
1
répondu MadBender 2013-12-22 15:36:57

Serait préférable d'utiliser un framework comme jQuery.
Dans jQuery, vous pouvez définir une fonction comme ceci:

$(document).ready(function() {

});

De cette façon, il sera appelé lorsque le DOM est complètement chargé.

Une documentation complète de la fonction ready () peut être trouvée ici .

0
répondu Karsten 2011-04-06 16:53:52