可能重复:
Why split the <script> tag when writing it with document.write()?
看看enyo来源,我看到了这个(在enyo.js中):
document.write('<scri' + 'pt src="' + root + "/source/boot/" + inSrc + '"></scri' + 'pt>');
为什么<script
标记分为<scri + pt
?对于结束标记也是如此。这是我不知道的Javascript忍者的秘密吗?
答案 0 :(得分:4)
当浏览器的html解析器看到字符串“</script>
”时,无论它是否在javascript字符串中,它都会将其视为结束脚本标记并结束当前脚本块。将“</script>
”标记分成两部分可以防止在需要它作为javascript字符串时发生这种情况。
请参阅this explanation:
标签与内容无关。这意味着HTML Parser 我不知道我们正处于JavaScript字符串的中间。
直到浏览器之后才会进行JavaScript处理 已经了解哪些部分是JavaScript。直到它看到那个接近 标签,它不关心里面是什么 - 引用与否。
答案 1 :(得分:0)
它旨在获取各种过滤器周围的脚本标记。
答案 2 :(得分:0)
这是必要的,因为解析器将子字符串视为包含语句本身的结束<script>
标记,因此必须在中间的某处进行拆分
答案 3 :(得分:0)
防止浏览器阻止document.write
。做这类事情通常是不安全的。
此外,对于在身体任何地方看到</script>
的旧浏览器,会立即停止执行。这意味着document.write
之后的任何内容都不会被视为JavaScript代码。
请参阅此fiddle以了解我的意思。警告后会立即关闭script
标记。