href="javascript:void(0)"被爬虫视为死链,不抓取、不传递权重,大量使用会降低站点信任分;违反CSP策略、IE已废弃、语法易错、无语义、可访问性差,应优先用替代。

href="javascript:void(0)" 会让爬虫当死链处理
Googlebot 等主流爬虫不执行 JavaScript,看到 href="javascript:void(0)" 就直接跳过,既不抓取、也不传递任何权重。大量使用这类链接,爬虫会认为页面导航结构混乱或不可靠,间接拉低整站信任分。
它破坏语义,还可能触发 CSP 拦截
现代网站普遍启用内容安全策略(CSP),而 javascript: 协议默认被多数 CSP 规则禁止。一旦拦截,链接点击后 JS 不执行,功能彻底失效;控制台还会报错 Refused to execute a script because its hash is not in the script-src directive 这类警告。
- IE 已废弃
javascript:协议,Chrome 控制台明确标为“deprecated” -
void(0)漏写括号(如写成javascript:void 0)或空格,会导致语法错误,部分旧浏览器直接忽略整个 href 属性 - 搜索引擎无法从中提取任何语义信息,比
href="#"更差——后者至少能被识别为锚点占位符
可访问性支持极差,键盘用户基本不可用
a 标签带 href="javascript:void(0)" 后,Tab 键能聚焦,但 Enter 键是否触发事件完全取决于浏览器实现:部分屏幕阅读器直接跳过,某些 Android 浏览器压根不响应。你得手动补 role="button"、tabindex="0" 和 aria-label,否则 WCAG 2.1 AA 级别就过不了。
- 不是所有键盘用户都用 Enter —— Space 键在
button上才默认触发,a上无效 - 如果 JS 加载失败或被禁用,这个链接就彻底“哑火”,没有任何降级能力
- 比
href="#"多一层 JS 执行依赖,故障面更宽
真正该用什么替代它
优先级从高到低很明确:
立即学习“Java免费学习笔记(深入)”;
- 用
<button type="button"></button>:语义正确、天然无跳转、键盘友好、无需额外 ARIA - 必须保留链接样式时,用
href="#"+event.preventDefault():比return false更可控,尤其适合事件委托场景 - 极少数老系统兼容需求下,才考虑
href="javascript:void(0)",且必须确认 CSP 显式允许javascript:
最易被忽略的一点:空链接从来不该是第一选择。如果它不跳转、不导航、也不提交,那它大概率本就不该是 a 标签——按钮、带 role 的 div 或封装好的组件才是更干净的解法。



















