通过异步加载js 完美解决调用第三方jQuery插件

分享 未结 精帖 3 3380
尹瑾柱-小微OA
悬赏:5飞吻
/**
* 异步加载依赖的javascript文件
* src:script的路径
* callback:当外部的javascript文件被load的时候,执行的回调
*/
function load_js(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();
};
}
}
调用方法
layui.use(['global'], function() {
var $ = layui.jquery;
var js_file='要加载的JS文件';
load_js(js_file, function() {
/* 调用插件*/
});
});
这种方法可以不用修改第三方插件代码。
回帖
本帖已设置禁止回复