2012-05-02 10 views
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')

+1

ページに*含まれているかどうか、または完全に読み込まれているかどうかを知りたいだけですか?それらは2つの非常に異なる問題です。 –

+1

jsの場合、.jsファイル内に変数(または定数)を定義して、それがページに定義されているかどうかを確認できます。 – Aziz

+0

@ Xeon06、ページに含まれています – foreyez

答えて

4

jqueryで.lengthを使用するとこれが有効です。 (!テストされていない)

だけの要素があなたのCSSファイルのURLに設定href属性に存在するかどうかを確認します。私は何をしたいん小さな関数を作っ

if (!$("link[href='/path/to.css']").length){ 
alert('not loaded'); 
}else{ 
alert('loaded!'); 
} 
+0

短い、甘いとポイントに。 – foreyez

4

。その名前のスクリプトが見つかるまで、すべて<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>内のリソースを見つけることが、thew文書全体ではないであろうことを

Live example

注意

本当に頭の中を見る必要があるなら、私に教えてください。非常に適切ではありません何のため

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

謝罪:あなたはjQueryのを使用している場合

+0

これも素晴らしいですが、トラバーサルは私が選んだ解決策ほどエレガントではありませんでした – foreyez

+0

確かに仲間です。 –

+0

jQueryに頼らない利点があります – liljoshu

6

あなたは多分ような何かを行うことができます。私は電話からこれをノックアウトしており、テストする時間はありませんでした。

+0

'jquery'ファイル自体をチェックする必要がある場合、それがまだロードされていなければ、この時点で失敗しません。 '$'は認識されないため –

関連する問題