代码简单直接贴代码
/**
* 异步加载依赖的javascript文件
* src:script的路径
* callback:当外部的javascript文件被load的时候,执行的回调
*/
var loadAsyncScript = function (src, callback) {
var srcArray = src.split("?")[0].split("/");
var scr_src = srcArray[srcArray.length - 1];
// 判断要 添加的脚本是否存在如果存在则不继续添加了
var scripts = document.getElementsByTagName("script");
if(!!scripts && 0 != scripts.length){
for(var i = 0; i < scripts.length; i ++){
if(-1 != scripts[i].src.indexOf(scr_src)){
callback();
return true;
}
}
}
// 不存在需要的则添加
var head = document.getElementsByTagName("head")[0];
var script = document.createElement("script");
script.setAttribute("type", "text/javascript");
script.setAttribute("src", src);
script.setAttribute("async", true);
script.setAttribute("defer", true);
head.appendChild(script);
//fuck ie! duck type
if (document.all) {
script.onreadystatechange = function() {
var state = this.readyState;
if (state === 'loaded' || state === 'complete') {
callback();
}
}
} else {
//firefox, chrome
script.onload = function() {
callback();
}
}
}