从外部网址

时间:2017-05-22 15:08:12

标签: javascript jquery

我尝试使用jQuery从页面获取所有URL,以便稍后使用$.get()调用它们。如果它们与脚本包含在同一页面上,那么调用类似

的内容就没有问题
var links = document.getElementsByTagName("a");
for(var i=0; i<links.length; i++) {
    alert(links[i].href);
}

在这种情况下,我只是使用alert来检查链接是否已被实际解析。 但是如何使用不是当前页面的URL做同样的事情呢? 任何帮助,将不胜感激。也许我错过了一些非常简单的东西,但是当涉及到JavaScript / JQuery相关的任何内容时,我真的很难过。

3 个答案:

答案 0 :(得分:2)

通过this大肆复制Nick Craver回答(上去投票),但是根据您的用例进行修改:

$.get("page.html", function(data) {
  var data = $(data);
  var links = data.find('a');
  //do stuff with links
});

请注意,只有当你正在点击的页面设置为跨源请求时,这才有效。如果不是,则需要从后端服务器对Dom解析器执行相同操作。 Nodejs有一些很棒的选择,包括jsDom

答案 1 :(得分:1)

您必须通过HTTP请求获取其他页面(JQuery中的$.get实现此目的),然后将该HTML转换为DOM,然后JQuery可以遍历并找到{{1} }标签,或使用其他方法(如正则表达式)查找返回标记中的所有链接。

编辑:除非您拥有有保证的HTML格式,并且可以保证页面上所有<a>标记的格式,否则可能实际上并不使用正则表达式。到目前为止,解析HTML可能更容易。

答案 2 :(得分:0)

使用window.location.href收集当前页面网址,然后将其与循环中其他“a”标记的href匹配

var links = document.getElementsByTagName("a");
var thisHref = window.location.href;
for(var i=0; i<links.length; i++) {
    templink = links[i].href;
    if (templink != thisHref){// if the link is not same with current page URL
        alert(links[i].href);
    }
}