我有一个简单的javascript (jsFiddle):
alert('</script>');
浏览器无法理解它 这是控制台输出:
Uncaught SyntaxError: Unexpected token ILLEGAL
但是这个脚本有效(jsFiddle):
alert('</scriptt>');//shows alert text '</scriptt>'
是某种浏览器错误还是正常ECMAScript
行为?
(浏览器是Chrome)
答案 0 :(得分:8)
因为它被认为是:
<script>
alert('
</script>
');
这是SyntaxError
您可以使用
alert( '<\/script>\n');
答案 1 :(得分:5)
HTML解析器无法理解JavaScript,因此会查找关闭标记</script>
的内容。如果您需要'</script>'
作为JavaScript中的字符串,只需使用'</s'+'cript>'
。
JavaScript本身没有这样的问题,在nodejs中使用var x = '</script>';
是没有问题的。 HTML解析器是。
答案 2 :(得分:1)
这是嵌入在HTML脚本标签中的Javascript,对吗?
然后HTML解析器在中间终止你的脚本。
将Javascript放入自己的文件中或分解字符串文字。也许CDATA部分也有效。