Document.write() Fractionnement des balises de script : une justification
Dans le développement Web, il n'est pas rare de rencontrer des scripts écrits à l'aide de document.write () qui divise le <script> ou /script> balises. Cette pratique peut soulever la question : « Pourquoi utiliser une telle technique ? »</p> <p><strong>Raison du fractionnement :</strong></p> <p>La réponse réside dans la manière dont les analyseurs HTML gèrent les sections CDATA dans < ;script> éléments. Alors que SGML impose qu'un <script> Le bloc doit se terminer dès qu'il rencontre une séquence ouverte de balise de fin (par exemple, </), les navigateurs ne reconnaissent qu'un véritable </script> close-tag comme fin d'un bloc de script.
Importance du fractionnement :
Considérons l'exemple suivant :
<script type='text/javascript'> document.write('<scr' + 'ipt type="text/javascript" src="script.js"></sc' + 'ript>'); </script>
Dans ce cas , si le <script> n'étaient pas divisés, la séquence de balises proches </sc serait interprétée comme la fin du <script> bloquer, mettant fin prématurément au script. Le fractionnement de la balise garantit que le navigateur analyse et exécute correctement l'intégralité du script.</p> <p><strong>XHTML et écriture de script :</strong></p> <p>Dans XHTML, il n'y a pas de gestion particulière pour les blocs de script. Des caractères tels que < et & doit être échappé dans les scripts. Cependant, l'utilisation de caractères sans échappement peut prêter à confusion dans les navigateurs analysant XHTML en tant que HTML.</p><p><strong>Écriture de script alternative :</strong></p><p>Pour répondre à la fois aux analyseurs XHTML et HTML, envisagez d'utiliser le approche suivante :</p><pre class="brush:php;toolbar:false"><script type="text/javascript"> document.write('\x3Cscript type="text/javascript" src="script.js"></script>');
En échappant les caractères en utilisant la notation hexadécimale, vous vous assurez que le script sera correctement interprété par tous les analyseurs.
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!