下载javascript文件但不立即评估?

时间:2015-03-31 21:44:51

标签: javascript performance page-load-time

我在网页加载过程中使用了大量的javascript文件。我希望它可以尽早下载(下载不会阻止UI线程)但不立即评估(在内存中加载它在UI线程中并阻止domcontentcomplete事件,从而阻止初始页面绘制)。

它将初始化XHR以获取其他数据并更新页面。用户将尽早看到静态页面并稍后获取所有数据。如果它在html头中,则初始静态页面显示会延迟。如果它在页面结束,下载将延迟整个内容显示。

在我稍后启动解析之前,有没有办法下载但不解析?

1 个答案:

答案 0 :(得分:1)

如果JS文件对于呈现并不重要,则可以使用文件的async标记上的defer<script>属性。使用async与将<script>标记放在结束<body>标记之前的效果基本相同。

< Script > - MDN

  

异步

     

HTML5设置此布尔属性以指示浏览器   如果可能,应该异步执行脚本。它没有   对内联脚本(即没有src的脚本)的影响   属性)。

     

延迟

     

此布尔属性设置为向浏览器指示在解析文档后要执行脚本。由于此功能尚未被所有其他主流浏览器实现,因此作者不应假设脚本的执行实际上将被延迟。

您也可以使用setTimeout来电。只要<script>没有阻止任何呈现,将其包装在setTimeout中就会延迟它。

var delay = 10 /* or however many ms you want */
setTimeout(function(){
    /* your code goes here */
}, delay)

编辑:如果您希望在DomContentLoaded事件后专门执行,只需将代码包装在该事件的事件侦听器中。

 document.addEventListener("DOMContentLoaded", function(event) {
    /* Your code goes here */
  });