为什么脚本标记分为两个字符串?

时间:2012-09-06 14:11:42

标签: javascript optimization enyo

  

可能重复:
  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忍者的秘密吗?

4 个答案:

答案 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标记。