De nombreuses personnes maîtrisent déjà Javascript, mais lorsqu'elles voient le report, elles ne savent peut-être pas à quoi il sert ; de nombreuses personnes ont également rencontré un tel problème, et elles doivent exécuter directement d'autres js, manipuler des objets DOM et toujours signaler l'objet. erreur introuvable. Comme tout le monde le sait, la raison est que la page n'a pas encore été chargée et que l'objet d'opération js est toujours en cours de téléchargement. Mais beaucoup de gens ne savent pas que l’ajout de la balise defer peut facilement résoudre ce problème.
<script src="../CGI-bin/delscript.js" defer></script>
La fonction de defer est d'exécuter le script après le chargement du document, afin d'éviter le problème de ne pas trouver l'objet --- un petit problème
Copiez le code comme suit :
<button id="myButton" onclick="alert('ok')">test</button>
<script>
monBouton.click();
</script>
<script>
monBouton.click();
</script>
<button id="myButton" onclick="alert('ok')">test</button>
<script différé>
fonction document.body.onload() {
alert(document.body.offsetHeight);
}
</script>
Ajouter defer signifie qu'il sera exécuté une fois la page complètement chargée, ce qui équivaut à window.onload, mais il est plus flexible que window.onload dans l'application !
Defer est un « héros méconnu » doté du pouvoir du script. Il indique au navigateur que le segment Script contient du code qui n'a pas besoin d'être exécuté immédiatement et, utilisé conjointement avec l'attribut SRC, il peut également provoquer le téléchargement de ces scripts en arrière-plan et l'affichage du contenu au premier plan. à l'utilisateur normalement.
--Mais exécutez le script une fois le document chargé
Attention à deux points :
1. N'appelez pas la commande document.write dans un segment de script de type différé, car document.write produira un effet de sortie direct.
2. De plus, n'incluez aucune variable ou fonction globale à utiliser par le script d'exécution immédiate dans le segment de script différé.
Une manière courante d'optimiser les performances consiste à définir l'attribut « defer » dans la balise <SCRIPT> lorsque le script n'a pas besoin d'être exécuté immédiatement. (Le script immédiat n'est pas contenu dans un bloc fonctionnel, il sera donc exécuté pendant le processus de chargement.) Après avoir défini l'attribut "defer", IE n'a pas besoin d'attendre que le script se charge et s'exécute. De cette façon, la page se chargera plus rapidement. De manière générale, cela signifie également qu'il est préférable de placer les scripts immédiats dans des blocs fonctionnels et de gérer la fonction dans le gestionnaire onload du document ou de l'objet corps. Cette propriété est utile lorsque certains scripts doivent être exécutés en fonction des actions de l'utilisateur, comme cliquer sur un bouton ou déplacer la souris vers une certaine zone. Mais lorsque certains scripts doivent être exécutés pendant ou après le chargement de la page, les avantages de l'utilisation de l'attribut defer ne sont pas grands.
L'attribut defer dans le script est faux par défaut. Selon la description dans le Guide de programmation DHTML, l'attribut Defer s'écrit comme ceci :
L'utilisation de l'attribut au moment de la conception peut améliorer les performances de téléchargement d'une page, car le navigateur n'a pas besoin d'analyser et d'exécuter le script et peut continuer à télécharger et à analyser la page.
En d'autres termes : si vous ajoutez l'attribut defer lors de l'écriture d'un script, le navigateur n'a pas besoin de le traiter immédiatement lors du téléchargement du script, mais continue de télécharger et d'analyser la page, ce qui améliorera les performances de téléchargement.
Il existe de nombreuses situations de ce type. Par exemple, si vous définissez beaucoup de variables JavaScript ou écrivez beaucoup de scripts dans le fichier de référence (.inc) qui doivent être traités, vous pouvez aussi bien ajouter l'attribut defer à ces scripts, ce qui contribuera certainement à améliorer les performances. .
Les exemples sont les suivants :
Copiez le code comme suit :
<langage de script="javascript" différer>
var objet = nouvel objet ();
....
</script>
Parce que l'attribut defer est par défaut false, alors ici
<langage de script="javascript" différer>
Déclarer explicitement l'attribut defer équivaut à
<langage de script="javascript" defer=true>
Après avoir déclaré l'attribut defer, vous devez déterminer si d'autres variables font référence aux variables du bloc de script defer, sinon une erreur de script se produira.