2010-02-10 3 views
8

En plus de vous permettre d'insérer des variables js dans un tag de script lorsqu'il est écrit comme document.write('<scr' + 'ipt src= quels sont les avantages/inconvénients de ceci par rapport à un tag <script src=> normal?document.write ('<scr' + 'ipt src = vs <script src =

Je demande surtout en ce qui concerne la vitesse, mais intéresse toute l'histoire.

Merci Denis

+0

Je ne vois aucune question –

+0

Stackoverflow fait ceci: 'document.write (' Skilldrick

+0

Cette question aide-t-elle? http://stackoverflow.com/questions/236073/why-split -le script-tag-en-écriture-it-with-document écrire –

Répondre

2

Je suppose que cela est d'obtenir le blocage non javascript chargement.

Pour cela, je suggère à la recherche dans les postes Steve Souders sur le sujet. http://www.stevesouders.com/blog/2009/04/27/loading-scripts-without-blocking/

La bibliothèque LABjs résout ceci d'une manière très pratique. http://labjs.com/

En outre, il semble les navigateurs plus récents commencent à charger des choses parallèles par défaut http://www.stevesouders.com/blog/2010/02/07/browser-script-loading-roundup/

0

autres que ceux? Il n'y en a pas.

(Soit dit en passant, le fractionnement d'un balise de script dans un JS chaîne dans une paire de chaînes concaténées est inutile ballonnement)

9

Il n'y a pas besoin de '<scr'+'ipt'. Il est nécessaire de '<\/scr'+'ipt>'. Parce que l'interprète HTML n'a pas besoin de comprendre le Javascript, donc il traitera tout ce qui entre <script>...</script> comme le texte, et ne sera pas soin var a='</script>'; est une chaîne de caractères Javascript, il considérer la balise de fermeture pour <script> et considérer le reste du texte du script comme HTML (erroné) simple.

edit: corrigé par la suggestion de David

+4

Et c'est faux aussi. Il devrait être: '" <\/script> "' puisque les parseurs HTML (au moins ceux qui implémentent HTML correctement, c'est-à-dire pas la plupart des navigateurs web) traiteront ' Quentin

+3

'" <\/script> "' pas '" <\/scr "+" ipt> "'. Ce dernier est inutile, inefficace, difficile à lire. – Quentin