Diviser le <script> Balise dans document.write()</strong></p> <p>Document.write() est une méthode puissante pour insérer dynamiquement du contenu dans un document HTML. Cependant, lors de l'écriture d'un <script> balise à l’aide de document.write(), il devient nécessaire de diviser la balise en plusieurs parties. Cette technique est utilisée par divers sites Web, notamment Amazon, pour empêcher la résiliation prématurée du <script> block.</p> <p>Le besoin de fractionnement découle de la façon dont les navigateurs gèrent le </script> étiqueter. En SGML, un bloc de script est censé se terminer sur n'importe quelle séquence ouverte de balise de fin (), qui inclut le étiqueter. Cependant, les navigateurs ne terminent l'analyse que lorsqu'ils rencontrent un message close-tag.
Par conséquent, si le n'est pas divisé, cela mettra fin prématurément à l'ensemble du fichier <script></script> bloc. Pour éviter cela, les sites Web divisent le balise autour du < et /, en préservant la séquence d'ouverture de la balise de fin requise sans mettre fin prématurément au bloc.
Par exemple, Amazon utilise cette technique pour inclure dynamiquement jQuery :
<script type='text/javascript'> if (typeof window['jQuery'] == 'undefined') document.write('<scr'+'ipt type="text/javascript" src="http://z-ecx.images-amazon.com/images/G/01/javascripts/lib/jquery/jquery-1.2.6.pack._V265113567_.js"></sc'+'ript>'); </script></p> <p>Dans XHTML, il n'y a pas gestion spéciale pour les blocs de script, donc tous les caractères qu'ils contiennent doivent être échappés. Cependant, cela peut prêter à confusion pour les navigateurs analysant XHTML en HTML. Pour éviter cela, il est préférable d'utiliser des références de caractères hexadécimaux pour représenter les caractères inférieur à et esperluette :</p> <pre class="brush:php;toolbar:false"><script type="text/javascript"> document.write('\x3Cscript type="text/javascript" src="foo.js">\x3C/script>'); </script>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!