67 votes

Pourquoi $(window).load() ne fonctionne pas en jQuery?

Je suis en train d'apprendre jQuery en utilisant Visual Studio et en testant mon code dans le navigateur Chrome. Voici mon code HTML

        $(window).load(function () {
            alert("Fenêtre chargée");
        });

Voici mon explorateur de solutions

Explorateur de solutions

Maintenant, pourquoi mon navigateur ne lance-t-il pas l'alerte "Fenêtre chargée" ?

0 votes

Oui, car $(document).ready() fonctionne.

0 votes

Chargement de Windows est à peine utilisé pourquoi ne pas utiliser la déclaration prête du document ?

1 votes

À partir de la documentation, je vois que c'est obsolète à partir de la version 1.8, vous avez la version 3

176voto

C-link Nepal Points 10815

Vous utilisez la version 3.1.0 de jQuery et l'événement load est déconseillé depuis la version 1.8 de jQuery. L'événement load est supprimé à partir de jQuery 3.0. Au lieu de cela, vous pouvez utiliser la méthode on et lier l'événement load en JavaScript:

 $(window).on('load', function () {
      alert("Window Loaded");
 });

0 votes

C'est génial!

0 votes

@Hash Heureux que cela vous soit utile.

6voto

William Hou Points 83

En résumé, la PREMIÈRE réponse est la BONNE :

$(window).on('load', function () {
  alert("Fenêtre chargée.");
});

Je dois écrire une réponse entière séparément car il est difficile d'ajouter un commentaire aussi long à la deuxième réponse.

Je suis désolé de dire ça, mais la deuxième réponse ci-dessus ne fonctionne pas correctement.

Les trois scénarios suivants illustreront mon point de vue :

Scénario 1 : Avant que la méthode suivante ne soit obsolète,

 $(window).load(function () {
     alert("Fenêtre chargée.");
  });

Si nous exécutons les deux requêtes suivantes :

   $(window).load(function () {
     alert("Fenêtre chargée.");
   }); 

   $(document).ready(function() {
     alert("Dom chargé.");
   });
,

l'alerte (Dom chargé.) de la deuxième requête s'affichera en premier, et celle (Fenêtre chargée.) de la première requête s'affichera plus tard, ce qui est la bonne manière de faire.

Scénario 2 : Mais si nous exécutons les deux requêtes comme le suggère la deuxième réponse ci-dessus :

   $(window).ready(function () {
     alert("Fenêtre chargée.");
   }); 

   $(document).ready(function() {
     alert("Dom chargé.");
   });
,

l'alerte (Fenêtre chargée.) de la première requête s'affichera en premier, et celle (Dom chargé.) de la deuxième requête s'affichera plus tard, ce qui est INCORRECT.

Scénario 3 : D'autre part, si nous exécutons les deux requêtes suivantes, nous obtiendrons le résultat correct :

   $(window).on("load", function () {
     alert("Fenêtre chargée.");
   }); 

   $(document).ready(function() {
     alert("Dom chargé.");
   });
,

en d'autres termes, l'alerte (Dom chargé.) de la deuxième requête s'affichera en premier, et celle (Fenêtre chargée.) de la première requête s'affichera plus tard, ce qui est le BON résultat.

C'est pourquoi la PREMIÈRE réponse est la BONNE :

$(window).on('load', function () {
  alert("Fenêtre chargée.");
});

3voto

Gene Points 398
   $(window).ready(function () {
      alert("Fenêtre chargée");
   });

4 votes

En fait, ceci est équivalent à $(document).ready(), voir les notes sur la obsolescence dans jQuery 3 : "la sélection n'a aucun impact sur le comportement de la méthode .ready()".

2 votes

Il ne s'agit PAS de l'équivalent de $(window).load

0 votes

Quelle est la différence ?

0voto

Mohsin Shoukat Points 305

Dans jquery-3.1.1

$("#id").load(function(){
//le code va ici});

ne fonctionnera pas car la fonction de chargement ne fonctionne plus

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