asyncLoadScript(context,{src,id}){//異步加載script腳本
return new Promise(resolve=>{
if(context.dispatch("checkIsLoadScript",src)){
if($("#"+id) && $("#"+id).src==src){//若script標簽存在,則先刪除
console.log("刪除成功")
$("#"+id).remove();
}
}
let scriptNode = document.createElement("script");
scriptNode.setAttribute("type", "text/javascript");
scriptNode.setAttribute("charset", "utf-8");
scriptNode.setAttribute("id",id);
scriptNode.setAttribute("src", src);
document.body.appendChild(scriptNode);
if (scriptNode.readyState) { //IE 判斷
scriptNode.onreadystatechange = () => {
if (scriptNode.readyState == "complete" || scriptNode.readyState == 'loaded') {
resolve();
}
}
} else {
scriptNode.onload = () => {
console.log("script loaded");
resolve();
}
}
})
},
// 檢測是否加載了 script腳本 文件
checkIsLoadScript(context,src) {
let scriptObjs = document.getElementsByTagName('script');
let reg=RegExp(src);
for(let sObj of scriptObjs) {
if (sObj.src.match(reg)) {
return true;
}
}
return false;
},
異步加載腳本
(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "https://connect.facebook.net/en_US/sdk.js"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));
。
