首頁 > web前端 > js教程 > 主體

js/css動態載入JS插件

php中世界最好的语言
發布: 2018-03-10 16:16:45
原創
1944 人瀏覽過

這次帶給大家js/css動態載入JS插件,製作js/css動態載入JS插件的注意事項有哪些,下面就是實戰案例,一起來看一下。

JavaScript建立節點新增到body或head

新增js的程式碼:

var n = document.createElement("script");
n.setAttribute("type", "text/javascript");
n.setAttribute("src", i);document.body.appendChild(n); 
document.head.appendChild(n);
登入後複製

寫個用來動態加入節點js的程式碼:

/*
es6 中 函数设置默认参数可以使用 例:function 函数名(变量= 默认值) {...}
如果想要兼容可以使用 例:function 函数名(变量) {if(变量==undefined){变量= 默认值}....}
*/function cr_node(i, l = "body") { //创建节点并添加
    t = i.split(".").reverse()[0];//获取后缀
    var n = null;    if (t == "js") {//后缀判断
        n = document.createElement("script");
        n.setAttribute("type", "text/javascript");
        n.setAttribute("src", i);
    } else if (t == "css") {
        n = document.createElement("link");
        n.setAttribute("rel", "stylesheet");
        n.setAttribute("href", i);
    }    if (n != null) {        if (l == "body") {            document.body.appendChild(n);
        } else if (l == "head") {            document.head.appendChild(n);
        } else {
            l.appendChild(n);
        }
    }    return n;
}
登入後複製

使用範例:

//添加bootstrap样式cr_node("http://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css","head")//默认添加jquery到<body>...</body>cr_node("http://cdn.bootcss.com/jquery/3.1.1/jquery.min.js");//添加jquery到<head>...</head>cr_node("http://cdn.bootcss.com/jquery/3.1.1/jquery.min.js","head");//添加jquery到<div id="id">...</div>cr_node("http://cdn.bootcss.com/jquery/3.1.1/jquery.min.js",document.getElementById("id"))
登入後複製

2.新增綁定事件函數

新增單一節點並綁定事件

function cr_node(i, l = "body") {....}function addNode(o, c = undefined) { //单个添加
    var n = null;    if(typeof(o) == "object") {
        n = cr_node(o.src, (o.parent ? o.parent : "body"));        if(typeof(o.load) == "function") {
            n.onload = o.load; //绑定加载事件
        }        if(typeof(o.err) == "function") {
            n.onerror = o.err; //绑定错误事件
        }
    } else if(typeof(o) == "string") {
        n = cr_node(o); //直接添加节点
        if(typeof(c) == "function") {
            n.onerror = n.onload = c; //绑定加载事件
        }
    }
}
登入後複製

使用說明:

//直接使用addNode("http://cdn.bootcss.com/jquery/3.1.1/jquery.min.js",function(){...});//完整使用addNode({    "src": "http://cdn.bootcss.com/jquery/3.1.1/jquery.min.js",    "load": function() {        console.log("加载成功");        console.log($("body").html());
    },    "err":function() {        console.log("加载失败");
    },    "parent": document.getElementById("id")//不写默认是body})
登入後複製

3.嘗試寫個批次新增的函數

如果只是新增可以使用以下函數:

function addNodes(o, index = 0) { //多个添加
    if (o.src.length > index && typeof(o.src) == "object" && o.src.length > 0) {        var n = cr_node(o.src[index], o.parent);        if (o.src.length - 1 == index && typeof(o.load) == "function") {
            n.onerror = n.onload = o.load;
        } else {
            n.onerror = n.onload = function() {
                addNodes(o, index + 1);
            }
        }
    }
}
登入後複製

使用範例:

addNodes({ "src":["http://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.css","http://cdn.bootcss.com/jquery/3.1.1/jquery.min.js","http://cdn.bootcss.com/jquery-cookie/1.4.1/jquery.cookie.min.js","http://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"],"parent":"head", 
"load":function(){ console.log(1111);   console.log($("body").html());
 }
})
登入後複製

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

相關閱讀:

如何使用s-xlsx實作Excel 檔案匯入和匯出

怎麼使用JavaScript儲存文字數據

瀏覽器檔案分段斷點上傳

#

以上是js/css動態載入JS插件的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板