376 votes

Comment appeler une fonction JavaScript lors du chargement de la page ?

Traditionnellement, pour appeler une fonction JavaScript une fois que la page est chargée, vous ajouteriez un attribut onload au corps contenant un peu de JavaScript (généralement uniquement l'appel d'une fonction)

Lorsque la page est chargée, je veux exécuter du code JavaScript pour remplir dynamiquement certaines parties de la page avec des données du serveur. Je ne peux pas utiliser l'attribut onload car j'utilise des fragments JSP, qui n'ont pas d'élément body auquel je peux ajouter un attribut.

Y a-t-il un autre moyen d'appeler une fonction JavaScript au chargement? Je préférerais ne pas utiliser jQuery car je ne suis pas très familier avec.

17 votes

Au fait: c'est du Javascript; Java étant un langage et Javascript un autre. Il n'y a pas de chose appelée Java script. FYI

0 votes

Pouvez-vous vérifier que la modification de Kevin apportée à votre question pose toujours la même question, ou la reformuler pour nous assurer de bien comprendre ? (Essayez-vous de trouver une alternative à onload?)

1 votes

Est-ce que cette réponse répond à votre question? Comment faire exécuter JavaScript après le chargement de la page?

575voto

Matt Sieker Points 3166

Si vous souhaitez que la méthode onload prenne des paramètres, vous pouvez faire quelque chose de similaire à ceci :

window.onload = function() {
  votreFonction(param1, param2);
};

Cela lie onload à une fonction anonyme qui, lorsqu'elle est invoquée, exécutera la fonction souhaitée, avec les paramètres que vous lui avez donnés. Et bien sûr, vous pouvez exécuter plusieurs fonctions à partir de l'intérieur de la fonction anonyme.

0 votes

Et maintenant que j'inclus dynamiquement une page générée par le serveur et que j'ai besoin de la disponibilité du DOM, je dois traverser ce champ de mines. Si seulement quelqu'un avait encouragé correctement l'utilisateur de la bibliothèque plus tôt.

4 votes

Je n'ai pas dit que c'était une bonne idée. Bien que le développeur principal avec qui je travaille souffre d'un fort syndrome du "Not Invented Here", je n'ai pas réussi à le convaincre d'utiliser jQuery, à part sur quelques pages.

3 votes

Alors peut-être devriez-vous changer de travail. Si l'outil approprié n'est pas celui que vous utilisez, pourquoi vous acharner et lutter constamment contre l'incompétence ?

151voto

Ahmed Jolani Points 982

Une autre façon de faire cela est en utilisant des écouteurs d'événements, voici comment vous les utilisez :

document.addEventListener("DOMContentLoaded", function() {
  votre_fonction(...);
});

Explication :

DOMContentLoaded Cela signifie lorsque les objets DOM du document sont entièrement chargés et vus par JavaScript. Cela aurait aussi pu être "click", "focus"...

function() Fonction anonyme, sera invoquée lorsque l'événement se produira.

8 votes

Notez que cela ne fonctionnera pas dans IE 8 et versions inférieures. Sinon, c'est la meilleure solution en JS pur!

0 votes

Ceci est la réponse correcte car la réponse acceptée entraînerait des conflits s'il y a plus d'une méthode à appeler lors du chargement.

74voto

STW Points 15326

Votre question d'origine n'était pas claire, en supposant que la modification/l'interprétation de Kevin est correcte, alors cette première option ne s'applique pas

Les options typiques consistent à utiliser l'événement onload:

....

Vous pouvez également placer votre JavaScript tout à la fin du corps; il ne commencera pas à s'exécuter tant que le document n'est pas complet.

  ...

    SomeFunction();

Une autre option est d'utiliser un framework JS qui le fait intrinsèquement:

// jQuery
$(document).ready( function () {
  SomeFunction();
});

0 votes

Le javascript: dans le onload est inutile, bien que non nuisible.

0 votes

@STW ChargeRésultat(); donne Erreur de référence non capturée : ChargeRésultat n'est pas défini

0 votes

Où est-ce que j'écris le contenu de SomeFunction() ?

53voto

Sarfraz Points 168484
fonction votrefonction() { /* faire des choses lors du chargement de la page */ }

window.onload = votrefonction;

Ou avec jQuery si vous le souhaitez :

$(function(){
   votrefonction();
});

Si vous souhaitez appeler plus d'une fonction lors du chargement de la page, consultez cet article pour plus d'informations :

4 votes

Cela n'est pas correct, la fonction s'exécutera et assignera tout ce qu'elle retourne à onload. Les () ne devraient pas être là.

2 votes

Si d'autres fonctions écoutent l'événement onload, celles-ci seront écrasées. Il vaut mieux ajouter un écouteur d'événements plutôt que d'assigner un gestionnaire d'événements directement. Même dans ce cas, vous l'assigneriez comme `window.onload = votrefonction' sans la fermeture de la fonction, pas comme vous l'avez fait. Votre méthode cherche à exécuter votrefonction() au moment de l'assignation.

0 votes

Qui assignera la valeur de retour de la fonction à window.onload, ce qui ne fonctionnera pas, sauf si la valeur de retour est une fonction.

9voto

Md Amiruzzaman Points 205

Vous devez appeler la fonction que vous souhaitez appeler au chargement (c'est-à-dire, au chargement du document / de la page). Par exemple, la fonction que vous souhaitez charger lors du chargement du document ou de la page s'appelle "votreFonction". Cela peut être fait en appelant la fonction sur l'événement de chargement du document. Veuillez voir le code ci-dessous pour plus de détails.

Essayez le code ci-dessous:

    $(document).ready(function () {
        votreFonction();
    });
    function votreFonction(){
      //some code
    }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X