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
littleylv 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 1
不是 JavaScript 的问题,而是 XML 的问题
不是不能包含尖括号,而是 </script> 闭合了 <script> = = 你这个代码被解析后就是 <script>... ' ... </script> ' </script> 当然是不行了... 需要转义为 <\/script> |
8
libook 2020-04-15 12:21:19 +08:00 8
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>就行了
|