document.écrire vs appendChild
Est-il une différence dans la charge \ temps d'exécution entre les deux façons d'ajouter un script sur une page ?
<script>
document.write('<script src=someScript.js></script>');
</script>
vs ce:
<script>
var s=document.createElement('script');
s.src='someScript.js';
document.body.appendChild(s);
</script>
en supposant que les deux sont ajoutés au même emplacement sur la page (avant la balise de fermeture body).
Toute info est apprécié!
Edit: Merci à tous pour les commentaires et les réponses. Je suis actuellement à la recherche d'informations spécifiques sur les différences dans les temps de chargement et /ou de l'exécution (s'il en existe?). Aussi, je peux placer les deux alors que le DOM est encore être analysée. Merci encore pour tous les pointeurs!!
À l'aide de
firefox ne permet pas d'accomplir document.écrire que l'insécurité de l'opération
document.write()
est généralement mal vu 😉document.write()
travailler avec DOM la charge, mais appendChild()
travaillera avec de l'événement, vous pouvez utiliser appendChild(s)
avec les événements javascript e.g click
, load
.firefox ne permet pas d'accomplir document.écrire que l'insécurité de l'opération
OriginalL'auteur Uri Chandler | 2014-03-04
Vous devez vous connecter pour publier un commentaire.
Je suis tombé sur ce lors de mes recherches pour la même chose. Après quelques tests, j'en conclus que, oui, il y a un majeur différence entre ces deux méthodes. Sur les navigateurs modernes, ce n'est pas tellement sur le lieu de chargement ou de temps d'exécution, mais l'ordre dans lequel les scripts sont en cours d'évaluation. Par exemple, si vous avez le suivant:
someScript.js
index1.htm
index2.htm
De course
index1.htm
sur votre console va vous donner la séquence "1, 2, 3". L'exécution de index2.html vous donnera la séquence "1, 3, 2" à la place. Si il y a des scripts externes demandées, celles-ci permettront de charger à l'avance de façon dynamique demandésomeScript
pour les deux méthodes.Chose importante à noter est que l'ordre d'exécution. Comme Jack l'a noté dans le commentaire, à l'aide de
document.write
est mal vu. Cela est vrai si vos scripts ne sont pas situés à la fin du document html comme il va bloquer le rendu de votre page web. Je ne suis pas si sûr, si c'est toujours le cas si vos scripts sont en bas.Néanmoins, vous pouvez toujours utiliser une fonction de rappel pour mettre de l'ordre dans l'exécution de javascript.
Je suis en désaccord que c'est mal vu. Document.écrire, c'est seulement mal vu si il a utilisé d'une manière qui bloque les DOM. Si utilisé correctement, il est parfaitement viable, méthode de contrôle de l'exécution de script de commande. Bien sûr, cela ne fonctionne que lorsque, à la suite d'autres bonnes pratiques, chargé de vos scripts en bas de la page.
OriginalL'auteur Question Overflow
document.write()
écrit dans le document où il est exécuté.Alors que
appendChild
ajoute l'élément à l'élément spécifié.document.write()
ne pasoverwrite
votre document.document.write()
ajoute à la position il est exécuté àOriginalL'auteur Vicky Gonsalves