以非阻塞方式呈现 Javascript 有哪些不同的方法(效率方面的比较)?我听说过可以与 script 标签一起使用的 defer 属性。还有其他这样的方法吗?如果有,那么它们比 defer 有什么优势?
问问题
508 次
1 回答
5
我听说过可以与 script 标签一起使用的 defer 属性。
是的,defer
并且async
使脚本(可能)在初始解析/渲染期间不同步运行。
有没有其他这样的方法...
是的,如果您script
在 JavaScript 中创建一个元素并将其附加到 DOM,那也不会阻止页面解析/呈现。例如:
<script>
(function() {
var script = document.createElement('script');
script.src = "/path/to/your/async/script.js";
document.getElementsByTagName('script')[0].parentNode.appendChild(script);
})();
</script>
...如果有,那么它们比 defer 有什么优势?
defer
并且async
没有得到普遍支持,并且一些浏览器有一些怪癖。特别是,IE < 9 可能会defer
乱序执行 'd 脚本,而defer
'd 脚本意味着按顺序处理(只是不在页面的解析/呈现期间)。如果您script
自己添加元素,您可以挂钩它们的load
事件,然后加载下一个脚本(或使用类似 RequireJS 之类的东西 - 以及更多 - 为您服务)。除此之外,不多。
于 2013-10-23T09:33:53.573 回答