是否在调用appendChild时解析了javascript?

时间:2013-07-01 19:53:39

标签: javascript html onload deferred-loading

Google网页速度告诉我应该Defer parsing of JavaScript

我在标题中加载了两个外部Javascripts,并在文档底部调用了一个初始化函数。

如果我遵循Google的建议,我应该/可以创建这样的功能:

function downloadJSAtOnload() {

  var element = document.createElement("script");
  element.src = "myscript1.js";
  document.body.appendChild(element);

  element = document.createElement("script");
  element.src = "myscript2.js";
  document.body.appendChild(element);

  myinitialization();

}

在成功加载和解析脚本之前,我是否可以100%确定不会调用myinitialization()?否则,解决方案是什么?

2 个答案:

答案 0 :(得分:1)

通常在文档末尾(在''标记之前)包含脚本文件就足够了。

        ...
        <script src="myscript1.js"></script>
        <script src="myscript2.js"></script>
        <script>
            myinitialization();
        </script>
    </body>
</html>

这意味着文档将在脚本开始下载之前加载,但这也意味着您保证执行顺序。

答案 1 :(得分:0)

根据菲利克斯,答案是否定的。我不能依赖于在调用myinitialization();之前执行附加代码的事实。

解决方案是将代码封装在一个文件中并使用async