0

大きなレガシー Web アプリケーションがあります。いくつかの js ファイルと css ファイルに依存する JavaScript をいくつか追加しています。これらのファイルは、新しい JavaScript を追加するページに既に含まれている場合と含まれていない場合があります。

これらの Javascript および css ファイルが追加されていない場合にのみ、これらのファイルをページに含める方法はありますか?

4

4 に答える 4

1

ライブラリの存在を確認し、存在せず必要な場合はロードします

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);
}

...
于 2012-07-16T19:43:06.727 に答える
0

Javascriptを記述して、スクリプトタグを検索し、JSとCSSのタグをそれぞれリンクすることができます。見つからない場合は、HTMLにタグを挿入できます。

タグを挿入する方法: jQueryでスクリプトタグを作成できますか?

于 2012-07-16T19:43:27.870 に答える
0

いくつかのオプションがあります:

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'です。

于 2012-07-16T20:14:47.927 に答える
0

もちろん。それらの属性を調べてdocument.createElement、それに応じて設定します。

于 2012-07-16T19:44:27.147 に答える