0

可能重复:
为什么用 document.write() 编写 <script> 标签时要拆分它?

查看 enyo 源代码,我看到了这个(在 enyo.js 中):

document.write('<scri' + 'pt src="' + root + "/source/boot/" + inSrc + '"></scri' + 'pt>');

为什么<script标签被分解成<scri + pt? 结束标签也是如此。这是我不知道的 Javascript 忍者的秘密吗?

4

4 回答 4

4

当浏览器的 html 解析器看到字符串 " </script>" 时,无论它是否在 javascript 字符串中,它都会将其视为结束脚本标记并结束当前脚本块。将“ </script>”标签分成两部分可以防止在您需要它作为 javascript 字符串时发生这种情况。

看到这个解释

标签与内容无关。这意味着 HTML 解析器不知道我们在 JavaScript 字符串的中间。

只有在浏览器了解哪些部分是 JavaScript 之后,才会对 JavaScript 进行处理。在它看到关闭标签之前,它并不关心里面有什么——引用与否。

于 2012-09-06T14:17:07.077 回答
0

它旨在获取各种过滤器周围的脚本标签。

于 2012-09-06T14:12:21.737 回答
0

这是必要的,因为解析器将该子字符串视为<script>包含语句本身的结束标记,因此有必要在中间的某处进行拆分

于 2012-09-06T14:12:45.670 回答
0

为了防止浏览器阻止document.write. 做这种事情通常是不安全的。

此外,对于旧浏览器,当看到</script>正文中的任何位置时,会立即停止执行。这意味着后面的任何内容document.write都不会被视为 JavaScript 代码。

看看这个小提琴,看看我的意思。标签在script警报后立即关闭。

于 2012-09-06T14:12:55.850 回答