为什么开发商会分崩离析

时间:2009-11-30 06:56:07

标签: javascript html

我看到很多这样的事情:     S = "<scr" + "ipt language=\"JavaScript1.2\">\n<!--\n";

为什么他们会这样做,如果您只是直接使用"<script>",是否有应用程序/浏览器混乱?

2 个答案:

答案 0 :(得分:7)

看看这个问题:

Javascript external script loading strangeness.

取自bobince's answer

  

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

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

因此,HTML解析器出现了   开头&lt; script&gt;标签。内   &lt; script&gt ;, normal&lt; tag&gt;解析   被禁用(以SGML术语表示   element有CDATA内容)。找到   脚本块结束的地方,HTML   解析器查找匹配   close-tag&lt; / script&gt;。

     

它找到的第一个就是那个   在字符串文字内。一个HTML   解析器无法知道它在里面   字符串文字,因为HTML解析器   对JavaScript一无所知   语法,他们只知道CDATA。所以   你实际说的是:

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

即,一个未闭合的字符串文字   和未完成的函数调用。这些   导致JavaScript错误和   永远不会写出所需的脚本标记。

     

解决问题的常见尝试   是:

document.write('...</scr' + 'ipt>');

这不能解释为什么它在start标签中完成。

答案 1 :(得分:0)

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

  1. 创建<script>类型的元素。请参阅document.createElement
  2. 的文档
  3. 设置其属性(srctype等。)
  4. 使用body.appendChild将其添加到DOM。
  5. 这是一种更清洁的方法。

相关问题