fin d'une balise de script dans JSON provoquant une erreur d'analyseur de chrome
var c= {"Content":"</SCRIPT>"}
donne erreur d'analyse dans Chrome. œuvres Échapper ... </SCRIPT>
https://jsfiddle.net/OndrejSpilka327/banr9836/
Est-il vraiment bug chrome?
EDIT Je ne pense pas que l'argumentation soit correcte. L'analyseur HTML ne devrait rien avoir à faire avec l'analyseur syntaxique JavaScript. Tout d'abord, tout ce qui est inclus dans doit être analysé comme JavaScript, pas HTML. C'est certainement une mauvaise implémentation de l'analyseur HTML.
Pour votre curiosité:
var c= {"Content":"<SCRIPT></SCRIPT>"}
console.log(c.Content);
produit l'erreur sam dans jsFiddle ... et cela est certainement bien formé. Encore une fois, on peut affirmer que SCRIPT ne peut pas apparaître à l'intérieur de la balise SCRIPT externe, cependant tout ce qui est inclus dans les balises SCRIPT doit être analysé comme un script non HTML et surtout s'il s'échappe dans un littéral de chaîne normal. Une telle argumentation préconise seulement une mauvaise implémentation.
De toute évidence, le comportement génère des erreurs lorsque vous travaillez avec du contenu personnalisé sérialisé à json et persistant dans le tag SCRIPT.
Juste curieux quels tags vous avez enlevé Felix et pourquoi?
Un littéral d'objet est différent de JSON. Vous n'avez pas JSON ici. –
Eh bien, cet objet littéral est compatible avec JSON. Mais pour être précis, oui, c'est un objet littéral. Ça ne fait aucune différence. – OSP
"Tout d'abord, tout ce qui est inclus dans" "devrait être analysé en JavaScript, pas en HTML, ce qui est certainement une mauvaise implémentation de l'analyseur HTML." - Non. Le JavaScript est ** dans ** le HTML. Vous devez soit analyser le HTML (voici la balise de début, voici un nœud de texte, voici la balise de fin, passez maintenant le nœud de texte à l'analyseur JS pour être traité comme JS) ou vous devez reconnaître la balise de début et passez ensuite à l'analyse JS jusqu'à ce que vous atteigniez la fin du JS qui n'a aucun moyen de marquer "la fin du JS", ce qui est impossible et HTML + JS ne sont donc pas conçus pour être analysés comme ça. – Quentin