今回は js/css 動的読み込み JS プラグインを作成する際の 注意点 について、実際の事例を見てみましょう。
ノードを作成するJavaScriptbodyまたは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()); } })
Believeこの記事の事例を読んだ後は、その方法をマスターしたことになります。さらに興味深い情報については、PHP 中国語 Web サイトの他の関連記事に注目してください。
関連書籍:
s-xlsx を使用して Excel ファイルをインポートおよびエクスポートする方法
JavaScript を使用してテキスト データを保存する方法
ブラウザ ファイルのセグメント化されたブレークポイントのアップロード
以上がjs/css は JS プラグインを動的にロードしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。