如何利用JavaScript获取页面所有链接地址的完整方法
使用document querySelectorAll( a[href] )获取所有链接,通过el href提取绝对URL。需过滤空值、javascript:伪协议及重复链接(可用Set去重)。对于动态加载页面,可延迟执行或借助MutationObserver监听新增节点,确保捕获全部有效链接。

使用 document.querySelectorAll 获取所有 元素
推荐使用 document.querySelectorAll('a[href]') 来获取链接。该选择器会自动排除没有 href 属性的 元素,例如纯锚点或绑定 JavaScript 的按钮。相比直接使用 'a' 匹配所有 ,这种方法可以避免许多无效操作。
- 选择器
"a[href]"自带过滤功能,避免获取无意义的空链接。 - 示例代码:
const links = Array.from(document.querySelectorAll('a[href]'))
.map(el => el.href);
处理相对路径与绝对路径的转换
这里有一个关键点:el.href 返回的是浏览器解析后的绝对 URL,相比 el.getAttribute('href') 更加可靠。因为 el.href 始终给出完整地址,例如 https://example.com/path/,适合直接跳转或存储;而 getAttribute 返回原始字符串,可能是 /about 或 #section1,需要手动补全为绝对路径。如果需要保留原始的写法(如做静态分析),则使用 getAttribute;一般情况下优先使用 href。
过滤无效链接与重复项
实际页面中常常出现重复链接、空链接、JavaScript 伪协议(如 javascript:void(0))或邮件链接(mailto:)。可以简单地执行以下过滤:
- 排除空值或仅包含空白字符:
href.trim() === '' - 排除伪协议:
href.startsWith('javascript:') || href.startsWith('mailto:') - 去重可以用
new Set():
const uniqueLinks = [...new Set(links.filter(href => href && !href.startsWith('javascript:')))]
应对动态加载的内容
如果页面通过 AJAX 或 React、Vue 等框架异步渲染,初始 DOM 可能不包含所有链接。简单的做法是延迟执行,例如使用 setTimeout 或在 DOMContentLoaded 事件后再查询。更稳妥的方案是采用 MutationObserver 监听新增的 节点。对于单页应用,建议在路由切换后主动触发采集逻辑,而非仅依赖页面加载时机。
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
React中使用CSS变量实现组件样式动态隔离的方法
在React中,利用`data-id`属性和CSS属性选择器限定变量作用域,实现组件样式隔离,避免`:root`全局污染。运行时通过`ref`和`setProperty`仅更新当前组件根元素的CSS变量,确保变量仅在该组件DOM树内生效。
Canvas绘制带箭头的贝塞尔路径端点指向计算
Canvas绘制带箭头贝塞尔曲线需计算终点切线方向,三次曲线方向为终点减第二个控制点。将向量单位化后旋转±30°,按固定长度延伸出箭头两顶点,再用路径API绘制实心三角形。注意箭头紧接曲线绘制,避免路径污染。
如何从零开始为Web Worker编写模块化脚本的完整指南
WebWorker模块化脚本利用ES模块与newURL实现零配置可复用结构;也可用Browserify或web-worker库兼容旧环境。需避免DOM操作、使用相对路径、仅通过postMessage通信,由构建工具自动打包。此方式提升代码复用性,避免全局污染,提高开发效率。
CSS网格布局中grid-auto-flow自动流向属性详解及实现方法
grid-auto-flow控制未手动定位元素的填充方向,非自动对齐开关,需配合grid-template等定义轨道生效。dense模式回填空隙但破坏DOM顺序与视觉一致性。实际切换流向应直接重写整套网格定义,默认按行填充,理解这些避免布局混乱。
Vue.js处理大量异步请求的高效调度方案
处理Vue js中大量异步请求的调度方案包括:并行聚合(Promise all)处理独立请求,顺序链式(async await)处理依赖请求,可控并发(分批控制)平衡效率与负载,请求队列实现强管控如令牌续期和防重复提交。
- 热门数据榜
相关攻略
2026-07-12 07:01
2026-07-12 07:00
2026-07-12 07:00
2026-07-12 07:00
2026-07-12 06:59
2026-07-12 06:59
2026-07-12 06:59
2026-07-12 06:59
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程

