使用(或不使用)document.writeln启动Javascript?

时间:2011-05-12 17:33:11

标签: javascript tags tracking

我一直在研究一些跟踪问题,并且有关于启动脚本的问题。有人可以告诉我,如果有区别:

<script type="text/javascript" src="http://www.example.com/universalPixel.html"></script>

<script language="JavaScript"> document.writeln('<scri' + 'pt type="text/javascript" src="http://www.example.com/universalPixel.html"></scri' + 'pt>');</script>

我已经看到了这两种变化,但遗憾的是无法辨别出是否存在重要差异,这取决于是否包含了document.writeln方法。或者也许是我不知道的其他区别。

感谢您的帮助。

亚历

2 个答案:

答案 0 :(得分:3)

document.writeln可能用于动态包含脚本,使用奇怪的字符串连接方法,因为浏览器处理</script>出现在脚本标记的末尾,甚至在JavaScript字符串内部。因此,以下原因无法正常运行:

<script type="text/javascript">
    // code

    document.writeln('<script type="text/javascript" src="..."></script>");
    // ^^ the </script> above ends the previous <script> tag prematurely.

    // more code
</script>

但有更好的方法:

  1. 只需使用<script src="..">
  2. 正常包含它们即可
  3. 动态生成包括使用服务器端代码(即PHP)而不是JavaScript
  4. 使用提供动态库加载的JS库。

答案 1 :(得分:1)

由于不鼓励在XHTML中使用document.writeLn,因此您应该尝试使用选项1.如果使用了适当的doctype,许多严格的浏览器甚至会忽略第二项。