document.createElement('script') 动态加载外部js脚本顺序问题?

document.createElement('script')创建的js引用外部脚本如何让它最先加载。

代码是这样的

<html>
<head>
<script>
function bfkfffff(){

var bykf=['kf1','kf2','kf3','kf4','kf5','kf6','kf7','kf8'];//多个备用客服 注意严格按照格式填写
var item = bykf[Math.floor(Math.random()*bykf.length)]
return item;
}
var uuid;
  

    uuid = localStorage.getItem("uuid");
    console.log(uuid);
    if (typeof (uuid) == 'undefined' || typeof (uuid) == 'null' || typeof (uuid) == '' || uuid == null) {
        let ls = randomString()
        localStorage.setItem("uuid",ls );
        uuid = ls;
    }
    var ma = document.createElement('script'); ma.type = 'text/javascript'; ma.async = true;
ma.src = 'http://xxxxxx/values/xtjtj?bmid=2&uuid='+uuid;
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ma, s);
    
function randomString(len) {
    len = len || 32;
    var $chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';
    var maxPos = $chars.length;
    var pwd = '';
    for (i = 0; i < len; i++) {
        pwd += $chars.charAt(Math.floor(Math.random() * maxPos));
    }
    return pwd;
}



</script>

我写在html头部了 也正常引用进来的但是不是最先引用的,我主要是想在 html 里面 引用 ><font><Script>document.write(xsssss());</script></font>方法 而这个方法是通过上面的js引用进来的,但是貌似引用这个方法的时候js文件还没有加载进来。如果直接写script src引用,然后放在最前面是没问题的。但是我需要传递一个随机参数过去 所以只能用上面这种方法了。

阅读 9k
1 个回答

该问题和 javascript 脚本动态加载时如何检测加载完成 很相似,不过吾辈更推荐 Promise 风格而非使用回调函数。。。

可以使用 await 等待脚本加载完毕,例如动态加载 script 脚本的函数 loadScript

;(async () => {
  await loadScript('http://xxxxxx/values/xtjtj?bmid=2&uuid='+uuid)
  // 之后的操作
})()
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题