为什么拥有`<脚本>`在字符串文字中导致JS语法错误

Why does having `<script>` in a string literal cause a JS syntax error?

本文关键字:语法 错误 文字 JS lt 拥有 脚本 gt 为什么 字符串      更新时间:2023-09-26

考虑以下代码:

 var testVar = "<script>alert('"a'")</script>@emaildomain.con";

在FF上的控制台中,我得到错误

SyntaxError:未终止的字符串文字。

但是,如果将script更改为xscript,则不会出现错误:

 var testVar = "<xscript>alert('"a'")</xscript>@emaildomain.con";

在JS中转义script标记的正确方法是什么?为什么将它们包含在字符串中会导致这种行为?

</script>部分实际上关闭了起始标记。

<script type="text/javascript">
     var testVar = "<script>alert('"a'")</script>@emaildomain.con";
</script>

所以,你的脚本将是:

<script type="text/javascript">
     var testVar = "<script>alert('"a'")
</script>
@emaildomain.con";</script>

为了解决这个问题,你可以这样做:

<script type="text/javascript">
     var testVar = "<script>alert('"a'")</" + "script>@emaildomain.con";
</script>