4

ソースコードを検索し、サイト上のすべてのリンクを探している特定のリンクと比較する JavaScript の関数を教えてください。

例: で JavaScript を実行してwww.youtube.comいて、特定の YouTube リンクを探しています。

次のようになります (もちろん動作しません)。

if(document.body.indexOf("http://www.youtube.com/SPECIFICURL")!== -1){
    console.log("Url found");
}else{
  console.log("Url not found");

}

どうすればこれを達成できますか?

4

4 に答える 4

11

querySelectorAll()CSS3 セレクターで試してください:

document.querySelectorAll('a[href*="http://www.youtube.com/SPECIFICURL"]')

フィドル

このセレクターは、特定の文字列を含む href 属性を持つすべてのリンクを検索します。これを少し分解してみましょう。

  • a- これは要素のタイプです。たとえば、「リンク」です。
  • href- これは要素属性です
  • *=- これは本質的に含むことを意味します。使用できる等値チェックにはさまざまな種類があります: で始まる、単語を含む、で終わるなどです。jQuery セレクターのドキュメントは非常に優れています。
  • "..."- 等号の後の引用符で囲まれたものはすべて、クエリが探している部分文字列です。
于 2014-03-05T17:11:34.950 に答える
4
function find_link_by_href(address)
    links = document.getElementsByTagName("a");

    for(var i = 0; i < links.length; i++) { 
      if( links[i].href === address ) {
        console.log("Url found"); 
        return; 
     } 
 }

次のように呼び出すことができます。

find_link_by_href("http://www.youtube.com/SPECIFICURL");
于 2014-03-05T17:06:43.347 に答える
2

Array.prototype.someの少なくとも 1 つの要素に探しているdocument.links要素があるかどうかを確認するために使用します。href

var has_link = [].some.call(document.links, function(link) {
   return link.href === 'http://www.youtube.com/SPECIFICURL';
});

次の場所にあるパッチを使用して、古いブラウザにパッチを適用できます。MDN Array#some

于 2014-03-05T17:08:03.663 に答える
1

document.links を使用してアンカーを取得し、次のように href を取得してループするだけです。

    var arr = [], l = document.links;
    for(var i=0; i<l.length; i++) {
      arr.push(l[i].href);
    }

//arr is now an array of all the href attributes from the anchors in the page

ここを参照してください。

次に、配列をループして、特定のリンクを確認します。

于 2014-03-05T17:07:17.727 に答える