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'));
。