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查看中的至少一个元素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 回答