问题描述
- 异步加载js的问题,为什么能异步加载
-
这是高性能js的一个例子,为什么没有设置async属性为true就能实现异步下载?var script = document.createElement ("script"); script.type = "text/javascript"; script.src = "file1.js"; document.getElementsByTagName_r("head")[0].appendChild(script);
解决方案
这是script标签,不是ajax,它的异步和同步不是相对于代码执行,而是对于文档解析来说。
加载file1.js是否完成,最终都是通过回调的方式通知。
另外async这是html5的特性,以前版本是没有的
解决方案二:
以下是一个监听页面加载script的例子。页面通过load或者onreadystate这个方法来监听script是否加载完成,可以体会 一下这个方法。
_load: function (path, callback) {
try {
var script = document.createElement('script');
script.src = path;
script.type = "text/javascript";
document.getElementsByTagName("head")[0].appendChild(script);
if (script.addEventListener) {
script.addEventListener("load", callback, false);
} else if (script.attachEvent) {
script.attachEvent("onreadystatechange", function () {
if (script.readyState == 4 || script.readyState == 'complete' || script.readyState == 'loaded') {
callback();
}
});
}
} catch (e) {
console.log(e);
}
}
时间: 2024-12-23 15:09:09