代码之家  ›  专栏  ›  技术社区  ›  David Johnstone

您是否有任何理由使用document.writeln包含javascript?

  •  4
  • David Johnstone  · 技术社区  · 15 年前

    是否有充分的理由说明为什么要包含这样的javascript:

    <script type="text/javascript">document.writeln('<script src="http://example.com/javascript/MyJavaScript.js" type="text/javascript"><' + '/script>');</script>
    

    (抱歉,滚动行太长了。这是在 head 一个HTML文档。)

    我最近一直在看一些HTML,我注意到这几次(都在一个站点上)。我想不出你为什么要这样做的任何原因,但我很难声称自己是一个网页开发人员。很可能这些代码行是自动生成的,但仍然有人认为这是个好主意。

    5 回复  |  直到 15 年前
        1
  •  5
  •   Christian C. Salvadó    15 年前

    此技术已用于并行加载外部脚本,保留执行顺序。

    它有一些缺点,例如,在IE和Opera中,即使脚本是并行加载的,其他外部资源(如图像、样式表、其他帧等)也是如此。在加载脚本之前阻止下载。

    但是现在,我建议通过dom脚本包括外部脚本,动态生成 script 元素,但你必须关心 memory leaks .

    检查这个 test page 查看浏览器的行为。

        2
  •  1
  •   Marc B    15 年前

    在某些情况下,document.writeln方法用于混淆脚本的源代码,和/或中断对生成的HTML执行简单字符串匹配的简单广告阻止程序:

    document.writeln('<' + 'sc' + 'r' + 'ip' + 't' + etc...)
    

    document.writeln('<script src="' + decode_obfuscated_url('encoded garbage here') + '">');
    
        3
  •  -1
  •   Ben Rowe    15 年前

    您可能需要基于某种客户端业务逻辑动态包含一个javascript文件。

        4
  •  -1
  •   Ravi Vanapalli    15 年前

    站点需要在延迟或页面加载之后再加载JS。

        5
  •  -1
  •   Darin Dimitrov    15 年前

    我不会说有什么特别的原因。它只是直接写入文档的一种方法。