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!