Maison >interface Web >js tutoriel >Pourquoi certains sites Web divisent-ils les balises `` et `` avec `document.write()` ?

Pourquoi certains sites Web divisent-ils les balises `` et `` avec `document.write()` ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-12 12:53:12701parcourir

Why Do Some Websites Split `` and `` Tags with `document.write()`?

Document.write() et fractionnement des balises de script : pourquoi c'est fait

Lors de l'utilisation de la méthode document.write() pour créer un script , vous remarquerez peut-être que certains sites Web séparent la balise <script> et </script> balises sur plusieurs appels. Cette technique est utilisée pour une raison spécifique : éviter l'arrêt prématuré du bloc de script.

Les navigateurs analysent généralement le HTML à l'aide des règles SGML. Selon SGML, les blocs de script doivent se terminer sur n'importe quelle séquence d'ouverture de balise de fin (ETAGO), telle que <[/). Cependant, dans la pratique, les navigateurs ne terminent l'analyse d'un bloc de script CDATA que sur une page close tag.

Par conséquent, y compris le <script> et </script> balises dans un seul appel document.write() entraînerait la fin prématurée du bloc de script par le navigateur lorsqu'il rencontre la séquence

Pour éviter ce problème, diviser les balises garantit que le Le navigateur interprète et exécute correctement le script. La répartition peut être comprise entre < et /, permettant au bloc de script de se terminer correctement uniquement lorsque le séquence est écrite.

Une meilleure alternative à l’utilisation de cette technique de fractionnement est d’échapper à tout < ou & dans le script et créez l'élément de script comme suit :

document.write('\x3Cscript type="text/javascript" src="foo.js">\x3C/script>');

Cette approche fonctionne à la fois pour les documents HTML5 et XHTML, garantissant la compatibilité croisée et évitant toute confusion dans les navigateurs.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn