javascript - 为什么字符串中包含 `<script>` 会导致 JS 语法错误?

标签 javascript escaping string-literals javascript-injection

考虑以下代码:

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

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

SyntaxError: unterminated string literal.

但是,如果您更改 scriptxscript ,没有错误:

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

正确的逃生方法是什么script JS 中的标签,为什么将它们包含在字符串文字中会导致这种行为?

最佳答案

</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>

关于javascript - 为什么字符串中包含 `&lt;script&gt;` 会导致 JS 语法错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34233520/

相关文章:

javascript - AJAX 调用忽略表单验证

javascript - 如何在 Windows 上打包 NW.js 应用程序

javascript - 简单模式/AutoForm 集合中的用户特定字段插入 [Meteor]

javascript - 为 JavaScript 函数参数转义 PHP 中的引号

将 uint8_t 数组复制到结构

javascript - 最简单的表格条目编辑/添加/删除 Web 工具包(与 php 一起使用)

c# - 包含反斜杠的路径字符串无法识别的转义序列

curl - 无法转义引号和大括号

c - 替换(不修改) 'const' 值,合法吗?

c++ - 为什么 const char[] 总是转换为 const char* ?