大きなレガシー Web アプリケーションがあります。いくつかの js ファイルと css ファイルに依存する JavaScript をいくつか追加しています。これらのファイルは、新しい JavaScript を追加するページに既に含まれている場合と含まれていない場合があります。
これらの Javascript および css ファイルが追加されていない場合にのみ、これらのファイルをページに含める方法はありますか?
大きなレガシー Web アプリケーションがあります。いくつかの js ファイルと css ファイルに依存する JavaScript をいくつか追加しています。これらのファイルは、新しい JavaScript を追加するページに既に含まれている場合と含まれていない場合があります。
これらの Javascript および css ファイルが追加されていない場合にのみ、これらのファイルをページに含める方法はありますか?
ライブラリの存在を確認し、存在せず必要な場合はロードします。
if (!window.jQuery) {
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "jquery-1.7.min.js";
document.getElementsByTagName('HEAD')[0].appendChild(script);
}
...
Javascriptを記述して、スクリプトタグを検索し、JSとCSSのタグをそれぞれリンクすることができます。見つからない場合は、HTMLにタグを挿入できます。
タグを挿入する方法: jQueryでスクリプトタグを作成できますか?
いくつかのオプションがあります:
JavaScript
特定のメソッドが未定義かどうかを確認してから、スクリプトを に追加しますhead
。
if (typeof method === 'undefined') {
var script = document.createElement('script'),
head = document.getElementsByTagName('head')[0];
script.type = 'text/javascript';
script.src = 'path/to/js/file.js';
head.appendChild(script);
}
script
または、各要素をループして、src
追加する必要があるものと等しいかどうかを確認できます。
Mozilla のindexOf
拡張子を使用して、含めたい JS ファイルを検索sourceArr
します。src
if (!Array.prototype.indexOf) {
Array.prototype.indexOf = function (searchElement /*, fromIndex */ ) {
"use strict";
if (this == null) {
throw new TypeError();
}
var t = Object(this);
var len = t.length >>> 0;
if (len === 0) {
return -1;
}
var n = 0;
if (arguments.length > 0) {
n = Number(arguments[1]);
if (n != n) { // shortcut for verifying if it's NaN
n = 0;
} else if (n != 0 && n != Infinity && n != -Infinity) {
n = (n > 0 || -1) * Math.floor(Math.abs(n));
}
}
if (n >= len) {
return -1;
}
var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0);
for (; k < len; k++) {
if (k in t && t[k] === searchElement) {
return k;
}
}
return -1;
}
}
これを使用するには、次の手順を実行します。
var scripts = document.getElementsByTagName('script'),
sourceArr = [],
i = 0;
for (i = scripts.length; i--;) {
var source = scripts[i].src;
sourceArr.push(source);
}
if (sourceArr.indexOf('path/to/js/file.js') === -1) {
var script = document.createElement('script'),
head = document.getElementsByTagName('head')[0];
script.type = 'text/javascript';
script.src = 'path/to/js/file.js';
head.appendChild(script);
}
上記を CSS ファイルにも使用できます。link
各要素をループして設定cssFile.type = 'text/css'
し、追加するだけcssFile.rel = 'stylesheet'
です。
もちろん。それらの属性を調べてdocument.createElement
、それに応じて設定します。