我在网页加载过程中使用了大量的javascript文件。我希望它可以尽早下载(下载不会阻止UI线程)但不立即评估(在内存中加载它在UI线程中并阻止domcontentcomplete事件,从而阻止初始页面绘制)。
它将初始化XHR以获取其他数据并更新页面。用户将尽早看到静态页面并稍后获取所有数据。如果它在html头中,则初始静态页面显示会延迟。如果它在页面结束,下载将延迟整个内容显示。
在我稍后启动解析之前,有没有办法下载但不解析?
答案 0 :(得分:1)
如果JS文件对于呈现并不重要,则可以使用文件的async
标记上的defer
或<script>
属性。使用async
与将<script>
标记放在结束<body>
标记之前的效果基本相同。
异步
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 */
});