Comment exécuter une fonction lorsque la page est complètement chargée?

J'ai besoin d'exécuter du code JavaScript lorsque la page est complètement chargée. Cela inclut des choses comme des images.

Je sais que vous pouvez vérifier si le DOM est prêt, mais je ne sais pas si c'est le même que lorsque la page est complètement chargée.

215
demandé sur Xufox 2009-06-23 19:42:18

11 réponses

C'est appelé onload. Il est venu waaaay avant que DOM ready ne soit là, et DOM ready a été créé pour la raison exacte que onload a attendu sur les images.

window.onload = function () { alert("It's loaded!") }
316
répondu Matchu 2009-06-23 15:48:53

Habituellement, vous pouvez utiliser window.onload, mais vous remarquerez peut-être que les navigateurs récents ne déclenchent pas window.onload lorsque vous utilisez les boutons historique précédent/suivant.

Certaines personnessuggèrent des contorsions étranges pour contourner ce problème, mais vraiment si vous faites juste un gestionnaire window.onunload (même celui qui ne fait rien), ce comportement de mise en cache sera désactivé dansTous les navigateurs . Le MDC documente assez bien cette "fonctionnalité" , mais pour une raison quelconque, il y a encore des gens qui utilisent setInterval et d'autres hacks bizarres.

Certaines versions D'Opera ont un bug qui peut être contourné en ajoutant ce qui suit quelque part dans votre page:

<script>history.navigationMode = 'compatible';</script>

Si vous essayez simplement d'obtenir une fonction javascript appelée une fois par vue (et pas nécessairement après le chargement du DOM), vous pouvez faire quelque chose comme ceci:

<img src="javascript:location.href='javascript:yourFunction();';">

Par exemple, j'utilise cette astuce pour précharger un fichier très volumineux dans le cache sur un écran de chargement:

<img src="bigfile"
onload="this.location.href='javascript:location.href=\'javascript:doredir();\';';doredir();">
25
répondu geocar 2009-06-23 16:10:57

Essayez ceci, il ne fonctionne Qu'après que la Page entière a chargé

Par Javascript

window.onload = function(){
    // code goes here
};

Par Jquery

$(window).bind("load", function() {
    // code goes here
});
12
répondu absiddiqueLive 2017-04-14 05:25:06

La fenêtre.l'événement onload se déclenche lorsque tout est chargé, y compris les images, etc.

Vous souhaitez vérifier L'état Dom ready si vous souhaitez que votre code js s'exécute le plus tôt possible, mais vous devez toujours accéder aux éléments DOM.

8
répondu codefly 2009-06-23 15:49:55

Par souci d'exhaustivité, vous pouvez également le lier à DOMContentLoaded, qui est maintenant largement supporté

document.addEventListener("DOMContentLoaded", function(event){
  // your code here
});

Plus d'informations: https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded

8
répondu murb 2016-05-23 23:14:30

Javascript en utilisant l'événement onLoad(), attendra que la page soit chargée avant de l'exécuter.

<body onload="somecode();" >

Si vous utilisez la fonction document ready du framework jQuery, le code se charge dès que le DOM est chargé et avant que le contenu de la page ne soit chargé:

$(document).ready(function() {
    // jQuery code goes here
});
7
répondu Defoncesko 2013-10-31 09:33:16

Vous pouvez utiliser fenêtre.onload , car les documents indiquent qu'il n'est pas déclenché tant que le DOM n'est pas prêt et que tous les autres actifs de la page (images, etc.) sont chargés.

5
répondu Marc Novakowski 2009-06-23 15:50:11

Essayez ce code

document.onreadystatechange = function () {
  if (document.readyState == "interactive") {
    initApplication();
  }
}

Visite https://developer.mozilla.org/en-US/docs/DOM/document.readyState pour plus de détails,

5
répondu Jacob Nelson 2013-02-28 10:59:14

Et voici une façon de le faire avec PrototypeJS :

Event.observe(window, 'load', function(event) {
    // Do stuff
});
3
répondu Mark Biek 2009-06-23 15:51:03

Si vous avez besoin d'utiliser Beaucoup onload Utilisez $(window).load à la place (jQuery):

$(window).load(function() {
    //code
});
1
répondu Sebastien Horin 2016-02-19 13:43:19

La propriété onload du mixin GlobalEventHandlers est un événement gestionnaire pour l'événement de chargement d'une fenêtre , XMLHttpRequest, élément, etc., qui se déclenche lorsque la ressource est chargé.

Donc, fondamentalement, javascript a déjà la méthode onload sur la fenêtre qui est exécutée quelle page entièrement chargée, y compris les images...

Vous pouvez faire quelque chose:

var spinner = true;

window.onload = function() {
  //whatever you like to do now, for example hide the spinner in this case
  spinner = false;
};
0
répondu Alireza 2017-10-13 14:15:59