2011-09-08 2 views
4

Je sais qu'il y a beaucoup de problèmes avec l'utilisation document.write et je l'évite absolument. Cependant, j'ai rencontré un problème avec un widget tiers qui l'utilise. Je ne sais pas trop comment mettre en mots (et aussi probablement ne pas connaître toutes les raisons) pourquoi cette petite tranche de mal pur devrait être évitée.Quels sont tous les maux de document.write

J'ai déjà réécrit le code que la 3ème partie donne à son widget afin qu'il n'utilise pas document.write. Cependant, ce code charge un autre script qui l'utilise. Je retarde le chargement du script qui provoque ses appels document.write après onload, écrasant toute la page.

Donc, la question est, quels sont tous les problèmes avec l'utilisation de document.write afin que je puisse fournir une liste complète des raisons pour lesquelles la 3ème partie devrait corriger leur code?

Merci d'avance!

+0

En fait, il écrasera le contenu de la page après le chargement du document. Oh, et que ça n'existe pas dans les documents XHTML. OMI. –

+0

Et là, je pensais que vous aviez "Quels sont les maux de la documentation", et j'étais excité pour une bonne discussion avant que cela se ferme;) –

+2

Voir cette question - http://stackoverflow.com/questions/802854/why- est-document-écriture-considéré-une-mauvaise-pratique – ipr101

Répondre

4

Citation du following post:

  • Parce que le navigateur de l'utilisateur de la force de scripts en ligne d'attente pour que le code complet (même si nous devons attendre une URL externe pour charger) avant rendre la reste de la page. Parce que nous ne pouvons pas continuer à traiter (modifier/dupliquer, etc.) la sortie avant de l'intégrer dans la page Web actuelle.

  • En outre, ils surchargent le code de xhtml
1

Ma seule expérience avec document.write est l'un où il reste d'effacer le contenu de la page, donc pour cette raison que je l'éviter. En outre, avec des bibliothèques comme jQuery et des fonctions de sélection JavaScript natives, vous pouvez modifier le contenu des éléments au lieu de vous assurer que document.write est placé là où vous voulez le contenu. Cela signifie que vous pouvez garder votre JavaScript séparé de votre balisage, ce qui rend tout plus propre et plus gérable.

1

Je voudrais ajouter à la réponse de Darin une note sur l'utilisation de document.write après le chargement de la page. Le flux de documents est fermé une fois le chargement de la page terminé. Ceci est fait par le navigateur. Si vous tentez d'utiliser document.write après cela, le flux de documents est à nouveau ouvert et accepte l'entrée, mais n'est pas automatiquement fermé. Cela met le navigateur dans un état où il pense toujours charger du contenu. Si vous remarquez une "connexion" sans fin au serveur, cela peut être une raison possible. D'autres effets secondaires pourraient être une page blanche (pas sûr si c'est dans IE ou FireFox).

Questions connexes