
var html = "<script></script>"; 这行总是报错,把第二个<去掉就不报错了。为什么呢?尖括号不需要转义的啊??

1 longgediyi999 2020-04-15 11:56:40 +08:00 `` |
2 longgediyi999 2020-04-15 11:57:19 +08:00 建议先去学一波 es6 |
3 U7Q5tLAex2FI0o0g 2020-04-15 11:57:57 +08:00 |
4 ksedz 2020-04-15 12:01:00 +08:00 vs 提示的问题,代码没错误 最近我也遇到了,看着不爽 |
5 mercury233 2020-04-15 12:02:32 +08:00 html 里</script>优先闭合脚本标签,部分浏览器看到的只有半截 js |
6 lsvih 2020-04-15 12:04:03 +08:00 ide 的问题吧 |
7 SunriseFox 2020-04-15 12:04:43 +08:00 不是 Javascript 的问题,而是 XML 的问题 不是不能包含尖括号,而是 </script> 闭合了 <script> = = 你这个代码被解析后就是 <script>... ' ... </script> ' </script> 当然是不行了... 需要转义为 <\/script> |
8 libook 2020-04-15 12:21:19 +08:00 5 楼和 7 楼是正解。 HTML 引擎和 JS 引擎是两个独立的引擎,HTML 源码会由 HTML 引擎优先解析,解析到 script 标签的时候,HTML 引擎会把<script>和后面第一个遇到的</scriipt>字符串之间的字符串交给 JS 引擎来解析。 虽然你的</script>在 JS 的字符串值内部,但对于 HTML 引擎来说,它并不认识 JS 代码,它就只是憨憨地在<script>后面找第一个遇到的</script>字符串。这样的话你的代码里,截取<script>到第一个</script>字符串之间的不是一段有效的 JS 代码,而之外的也不是有效的 HTML 代码。 举例: 源代码是: <script> html='<script></script>' </script> HTML 引擎交给 JS 引擎解析的是: html='<script> 上面 JS 字符串缺失后面的引号,所以不是合法的 JS,HTML 留下的代码是: ' </script> 首先第一行留下一个残缺的单引号,所以 HTML 就认为这是一段 text,就直接输出这个单引号字符;同时因为在</script>之前没有与之配对的<script>起始标签,所以后面这个闭合标签是不合法的 HTML 。 |
9 xmadi 2020-04-15 12:52:31 +08:00 via iPhone 编辑器识别的问题 换一个 |
10 yafoo 2020-04-15 13:06:39 +08:00 via Android 以前"</scr"+"ipt>"这样写过代码 |
12 otakustay 2020-04-15 16:36:53 +08:00 最简单的是<\/script>就行了 |