4
<head>
  <link rel="stylesheet" type="text/css" href="mystyle.css">
  <script src="myscript.js"></script>
</head>

頭にリソースが含まれているかどうかをチェックする機能が欲しいのですが

checkIfHeaderHas('myscript.js'); // would return true
checkIfHeaderHas('mystyle.css'); // would return true
checkIfHeaderHas('mybla.css'); // would return false

しかし、ファイル名の先頭を検索するにはどうすればよいのでしょうか。(javascriptの場合は「src」、cssの場合は「href」)

4

4 に答える 4

7

私はあなたが望むことをする小さな関数を作りました。その名前のスクリプトが見つかるまで、すべて<link>の要素をループします。<script>そうでない場合は、falseを返します。

function checkIfIncluded(file) {
    var links = document.getElementsByTagName("link");
    for(var i = 0; i < links.length; i++) {
        if (links[i].href.substr(-file.length) == file)
            return true;
    }

    var scripts = document.getElementsByTagName("script");
    for(var i = 0; i < scripts.length; i++) {
        if (scripts[i].src.substr(-file.length) == file)
            return true;
    }

    return false;
}

console.log(checkIfIncluded("mystyle.css"));
console.log(checkIfIncluded("myscript.js"));
console.log(checkIfIncluded("mybla.css"));
​

実例

<head>これにより、、だけでなく、ドキュメント全体でリソースが検出されることに注意してください。本当に頭の中を見る必要がある場合は、教えてください。別のことを考えます。

于 2012-05-02T18:29:48.560 に答える
7

jQuery を使用している場合は、次のようなことができます。

var checkIfHeaderHas = function(fileName) {

    // Start with CSS.
    $.each($("header link"), function() {
        if ($(this).attr("href").toLowerCase() === fileName.toLowerCase())
            return true;
    });

    // Then JavaScript.
    $.each($("header script"), function() {
        if ($(this).attr("src").toLowerCase() === fileName.toLowerCase())
            return true;
    });

    // Default response.
    return false;
}

正しくないことをお詫びします。私は自分の携帯電話からこれをノックアウトしていますが、テストする時間がありませんでした.

于 2012-05-02T18:38:39.780 に答える
4

jqueryで.lengthを使用すると、これで機能します。(未検証!)

CSSファイルのURLにhref属性が設定された要素が存在するかどうかを確認してください。

if (!$("link[href='/path/to.css']").length){
alert('not loaded');
}else{
alert('loaded!');
} 
于 2012-05-02T18:26:15.537 に答える
0

Here is a working (tested) solution:

function checkIfHeaderHas(name) {
  const checks = [
    {attr: 'href', items: $("head link")},
    {attr: 'src', items: $("head script")}
    // add any other if needed...
  ];
  let res = false;
  if (typeof name === 'string') {
    const lc = name.toLowerCase();
    for (let i = checks.length - 1; i >= 0; i--) {
      $.each(checks[i].items, function () {
        if (($(this).attr(checks[i].attr) || '').toLowerCase() === lc) {
          res = true;
          return false; // exit the loop as soon as found
        }
      })
    }
  }
  return res;
}
于 2020-07-13T17:22:57.633 に答える