查找所有网址并将其列为页面底部的可点击链接
Find and list all URL-s as clickable links to the bottom of the page
我正在尝试编写一个javascript,它正在搜索页面上的所有链接,然后将它们添加到原始内容的底部。
"Document.links"似乎做了查找部分,它也列出了它们,但它们不可点击。所以我尝试添加一些html代码(startHref和endHref行),这当然破坏了整个事情。
我的(非工作)脚本:
var links = document.links;
for(var i = 0; i < links.length; i++) {
var preLink = document.createTextNode("LINK: ");
var linkHref = document.createTextNode(links[i].href);
var lineBreak = document.createElement("br");
var startHref = document.createElement("a href="");
var endHref = document.createElement(""");
document.body.appendChild(preLink);
document.body.appendChild(startHref);
document.body.appendChild(linkHref);
document.body.appendChild(endHref);
document.body.appendChild(lineBreak);
}
如果这可行,我还想在每行前面列出一个数字(从 1 开始 - 可以在 preLink 部分中设置) - 如果不是太难实现的话。
另外,有没有办法列出不是所有的链接,而是只列出与某些内容匹配的链接?只喜欢与特定域的链接。谢谢!
正如您已经发现的那样,您可以使用以下内容获取文档中的所有链接:
var links = document.links;
现在你有一个 HTMLCollection。您可以循环访问它并显示所有链接。为了获得更好的布局,您可以将它们放在段落中(p
)。这将是循环:
for (var i = 0; i < links.length; i++) {
var p = document.createElement("p");
p.appendChild(links[i]);
document.body.appendChild(p);
}
现在所有链接都附加在页面末尾,每个链接都在自己的行上,并且可以单击。请尝试一下。
编辑:根据您的评论,如果我理解正确,您只需添加一行:
for (var i = 0; i < links.length; i++) {
var p = document.createElement("p");
// the following line is added
links[i].innerHTML = links[i].href;
p.appendChild(links[i]);
document.body.appendChild(p);
}
该行将简单地将链接的内部 HTML 替换为其属性 href
的值。
编辑:
变量links
仅指向 document.links
.因此,现有链接将从其原始位置删除并附加到末尾。如果您尝试在 for 循环中创建新链接(如document.createElement("a")
,您将创建一个无限循环,因为您正在循环访问文档中的所有链接。您还记得,变量 links
不是创建时document.links
的快照,而是指向它。
您可以通过创建数组来解决此问题:
var links = [];
// populate the array links
for (var j = 0; j < document.links.length; j++) {
links.push(document.links[j].cloneNode());
}
现在这是页面上所有链接的快照。每个链路都被克隆并推送到阵列。现在运行 for 循环,原始链接不会被删除。
如果原始链接是这样的:
<a href="http://example.com" id="example" class="example-class" title="click me">This is an example.</a>
它将变成:
<a href="http://example.com" id="example" class="example-class" title="click me">http://example.com</a>
但是,如果您只想:
<a href="http://example.com">http://example.com</a>
然后你必须调整代码:
for (var i = 0; i < links.length; i++) {
var p = document.createElement("p");
var a = document.createElement("a");
a.href = links[i].href;
a.text = links[i].href; // you can use text instead of innerHTML
p.appendChild(a);
document.body.appendChild(p);
}
如果要设置输出样式,可以添加如下类:
p.classList.add("my-css-class");
我希望这能帮助你实现你的目标。
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 如何使用jQuery自动打开页面上的所有链接
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- jquery动画可以通过编程链接吗
- 在单击href链接的同时下载文件
- 尽管链接成功并已成功下载,但未找到NPM模块
- 制作一个不带HTML a标记但在动画播放完毕后指向其他页面的超链接
- ReactJS映射:如何仅在url变量不为空时呈现html链接
- ScrollMagic不适用于页面底部链接的jQuery
- 删除浏览器底部链接的目标Url's页
- 查找所有网址并将其列为页面底部的可点击链接
- 对于每个h3链接,复制到列表项的底部
- 链接跳转到顶部和底部,但平滑滚动不会;不起作用
- 如何从页面底部的<链接滚动到#header DIV以及如何改变动画速度- JQuery 1.8.3
- 引导3定心导航添加5像素的底部的链接
- 如何使我的工具提示出现在我的链接下面,即使我的链接在页面的底部
- 为什么cdn链接放在索引文件的底部
- 如何在页面上设置#链接,但将目标与屏幕底部对齐
- 如何在第一页加载时在视口底部放置链接
- 点击链接时滚动到页面底部