需求:商城页面里调用第三方资源埋点
代码实现(主要解决资源未加载就被调用问题)
备注:把调用函数作为参数传进去 控制保证在资源加载完成后调用;
let COLLECTURL = http://collect.trc.com/index.js;
//动态创建js加载 function loadScript(url,callback,userId){ let w = document.getElementsByClassName("collect-name")[0]; // if(w!=undefined){ //有collect资源 if (w.readyState){ //IE w.onreadystatechange = function(){ if (w.readyState == "loaded" || script.readyState == "complete"){ w.onreadystatechange = null; callback(userId); } }; } else { //Others w.onload = function(){ callback(userId); }; } }else{ //没有collect资源 let script = document.createElement ("script"); script.type = "text/javascript"; script.className = "collect-name"; script.src = url; document.getElementsByTagName("head")[0].appendChild(script); if (script.readyState){ //IE script.onreadystatechange = function(){ if (script.readyState == "loaded" || script.readyState == "complete"){ script.onreadystatechange = null; callback(userId); } }; } else { //Others script.onload = function(){ callback(userId); }; } } } //回调函数 function sdkUse(UserId) { sdk.storeUserId(UserId) };
代码调用(因为需要需要 在登录接口)
loadScript(COLLECTURL,sdkUse,data.body.userId);