0

我有兴趣从使用 JavaScript 动态生成链接并且在 HTML 源代码中基本上不可见的站点中提取链接。例如,这里是一个示例站点,其中通过 js 菜单插入链接:http: //www.stcroixwebsolutions.com/

当我将鼠标悬停在链接上时,我看到了这些链接,但它们在 HTML 源代码中无法识别。

我想像这样输出链接:http:
//www.stcroixwebsolutions.com/ ?110000
http://www.stcroixwebsolutions.com/?110010
等。

你建议我用什么来提取这些链接?

4

3 回答 3

2

你可以尝试这样的事情......这至少会让你开始!

http://jsfiddle.net/Qv4St/

function showLinks() {

  var links = document.getElementsByTagName( 'a' );
  var last = links.length;
  var list = {};

  // for each anchor...
  for (var i = 0; i < last; i++) {

    list[links[i].href] = i;
    console.log(list);
    //' - text=' + links[i].innerHTML + '<br>';

}

  var linksList = document.getElementById( 'linksList' );
  linksList.innerHTML = list;
}    ​
于 2012-07-30T23:37:54.773 回答
1
var getLinks = function () {
        "use strict";
        var a = document.getElementsByTagName("a"),
            b = a.length,
            c = 0,
            d = [],
            e = "",
            f = location.href;
        f = f.substring(0, f.lastIndexOf("/"));
        for (c = 0; c < b; c += 1) {
            e = a[c].getAttribute("href");
            if (typeof e === "string" && e.length > 4) {
                if (e.charAt(0) === "/" || e.charAt(0) === "?") {
                    e = f + e;
                }
                d.push(e);
            }
        }
        return d.join("\n") + "\n" + d.length + " total links";
    },
    myLinks = getLinks(); //myLinks variable will contain the desired output.
//To output to the console just replace the line with 'return' with this code:
//console.log(d.join("\n") + "\n" + d.length + " total links");

运行此代码以在列表中返回给定页面上所有超链接的列表,每个结果在其自己的行中。

编辑:我现在将相对链接转换为绝对 URI。

于 2012-07-30T23:55:08.147 回答
0

有一个标准的document.links集合,它是文档中的所有链接。简单地迭代它。

于 2012-07-31T00:12:41.027 回答