为什么开发人员要拆分<;JavaScript脚本?

为什么开发人员要拆分<;JavaScript脚本?,javascript,html,Javascript,Html,我看到很多这样的事情: S=“\n看看这个问题: 摘自: 要了解问题所在,请查看顶部 其脚本元素中的行: <script type="text/javascript"> document.write('<script src="set1.aspx?v=1234" type="text/javascript"></script>'); </script> 文件。写(“”); 因此,

我看到很多这样的事情:
S=“\n看看这个问题:

摘自:

要了解问题所在,请查看顶部 其脚本元素中的行:

<script type="text/javascript">
    document.write('<script src="set1.aspx?v=1234"
                           type="text/javascript"></script>');
</script>

文件。写(“”);
因此,一个HTML解析器出现并看到 打开标签,里面 ,正常解析 已禁用(在SGML术语中 元素具有CDATA内容)。要查找 在脚本块结束的地方,HTML 解析器查找匹配的 关闭标签

它找到的第一个是 在字符串文本中。一个HTML 解析器无法知道它在 字符串文本,因为HTML解析器 我对JavaScript一无所知 语法,他们只知道CDATA 你实际上说的是:

<script type="text/javascript">
    document.write('<script src="set1.aspx?v=1234"
                           type="text/javascript">
</script>

文件。写('
也就是说,未关闭的字符串文字 还有一个未完成的函数调用 导致JavaScript错误和 从未写入所需的脚本标记

解决这个问题的共同尝试 是:

document.write(“…”);

但这并不能解释为什么要在start标记中添加脚本。

更合适的附加脚本的方法是使用DOM

  • 创建类型为
    的元素。请参阅
    文档的文档。createElement
  • 设置其属性(
    src
    type
    等)
  • 使用
    body.appendChild
    将其添加到DOM中

  • 这是一种更干净的方法。

    值得注意的是,自从Netscape时代以来,这就不是一个问题。所有现代浏览器(包括使用“现代”的IE6)都“正常”工作“在这方面。不幸的是,对于某些编辑器中的语法hiliers来说,情况并非如此……在这种情况下,正确的意思是错误的。依赖这种行为会使编写新的HTML/Javascript呈现变得非常困难。仅仅做
    是不够的,根本无法回答问题。
    document.write('...</scr' + 'ipt>');