查看 enyo 源代码,我看到了这个(在 enyo.js 中):
document.write('<scri' + 'pt src="' + root + "/source/boot/" + inSrc + '"></scri' + 'pt>');
为什么<script
标签被分解成<scri + pt
? 结束标签也是如此。这是我不知道的 Javascript 忍者的秘密吗?
查看 enyo 源代码,我看到了这个(在 enyo.js 中):
document.write('<scri' + 'pt src="' + root + "/source/boot/" + inSrc + '"></scri' + 'pt>');
为什么<script
标签被分解成<scri + pt
? 结束标签也是如此。这是我不知道的 Javascript 忍者的秘密吗?
当浏览器的 html 解析器看到字符串 " </script>
" 时,无论它是否在 javascript 字符串中,它都会将其视为结束脚本标记并结束当前脚本块。将“ </script>
”标签分成两部分可以防止在您需要它作为 javascript 字符串时发生这种情况。
看到这个解释:
标签与内容无关。这意味着 HTML 解析器不知道我们在 JavaScript 字符串的中间。
只有在浏览器了解哪些部分是 JavaScript 之后,才会对 JavaScript 进行处理。在它看到关闭标签之前,它并不关心里面有什么——引用与否。
它旨在获取各种过滤器周围的脚本标签。
这是必要的,因为解析器将该子字符串视为<script>
包含语句本身的结束标记,因此有必要在中间的某处进行拆分
为了防止浏览器阻止document.write
. 做这种事情通常是不安全的。
此外,对于旧浏览器,当看到</script>
正文中的任何位置时,会立即停止执行。这意味着后面的任何内容document.write
都不会被视为 JavaScript 代码。
看看这个小提琴,看看我的意思。标签在script
警报后立即关闭。