动态 加载和执行js文件

也可以参考:https://blog.csdn.net/WeilaPls/article/details/84712521   (多种识别移动端的方式) 

页面加载先判断设备,是pc还是移动,然后动态加载相应的js文件。以下有两个方法:

方法一:

    function is_pc(){
        var os = new Array("Android","iPhone","Windows Phone","iPod","BlackBerry","MeeGo","SymbianOS");  // 其他类型的移动操作系统类型,自行添加
        var info = navigator.userAgent;
        var len = os.length;
        for (var i = 0; i < len; i++) {
            if (info.indexOf(os[i]) > 0){
                return false;
            }
        }
        return true;
    }
    if(!is_pc()){
        document.write('<scr'+'ipt src="'+'a.js?_bid=152'+'"></scr'+'ipt>');
        document.write('<scr'+'ipt src="'+'zepto.min.js'+'"></scr'+'ipt>');
        document.write('<scr'+'ipt src="'+'b.js'+'"></scr'+'ipt>');
        document.write('<scr'+'ipt src="'+'c.js'+'"></scr'+'ipt>');
    }else {
        document.write('<scr'+'ipt src="'+'c.js'+'"></scr'+'ipt>');
        document.write('<scr'+'ipt src="'+'d'+'"></scr'+'ipt>');
        document.write('<scr'+'ipt src="'+'e'+'"></scr'+'ipt>');
    }


//if判断这里也可以如下写法,注意转义

 if(!is_pc()){
        document.write('<script src="'+'a.js?_bid=152'+'"><\/script>');
        document.write('<script src="'+'zepto.min.js'+'"><\/script>');
        document.write('<script src="'+'b.js'+'"><\/script>');
        document.write('<script src="'+'c.js'+'"><\/script>');
    }else {
        document.write('<script src="'+'c.js'+'"><\/script>');
        document.write('<script src="'+'d.js'+'"><\/script>');
        document.write('<script src="'+'e.js'+'"><\/script>');
    }

方法二:


//动态加载一个js文件的方法封装

function loadScript(a, b, z) {
    var c = document.createElement("script");
    c.async = false;
    if (z) {
        c.charset = "utf-8";
    }
    c.type = "text/javascript", c.readyState ? c.onreadystatechange = function() {
        ("loaded" == c.readyState || "complete" == c.readyState) && (c.onreadystatechange = null,
        b && b());
    } : c.onload = function() {
        b && b();
    }, c.src = a, document.body.appendChild(c);
}



//纯js(不使用jquery的封装),功能同上

function loadScript(url, callback) {
    var script = document.createElement("script")
    script.type = "text/javascript";
    if (script.readyState) { //IE
        script.onreadystatechange = function () {
            if (script.readyState == "loaded" || script.readyState == "complete") {
                script.onreadystatechange = null;
                callback();
            }
        };
    } else { //Others
        script.onload = function () {
            callback();
        };
    }
    script.src = url;
    document.getElementsByTagName("head")[0].appendChild(script);
}

使用:

//场景: pc下的加载 和 非pc的文件加载

if(!is_pc()){
// 加载js
loadScript("a.js", function(){
    loadScript("b.jss", function(){
        loadScript("c.js",
          function(){typeId="m";ulogin();
          loadScript("d.js", function(){uafun();});
        });
    });
})
}else{
    loadScript("b.js", function(){
        typeId="pc";ulogin();
        loadScript("a.js"),
        loadScript("d.js");
    })
}




//方法二
loadScript("script1.js", function(){
    alert("File is loaded!");
});

猜你喜欢

转载自blog.csdn.net/dxj124/article/details/84566269