base标签导致href="https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b"跳转错误,因其将https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b解析为base href拼接后的完整url,引发无意义重载而非锚点定位。应改用javascript:void(0)或preventdefault()拦截,默认行为干扰spa路由与锚点功能。

base标签会让跳转到错误位置
href="https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b" 本意是页面内锚点跳转,但一旦页面中存在 <base href="<a%20href=" https:>https://www.php.cn/link/2e07774ef899d0b043da816604908d89">,浏览器会把 https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b 解析成 @#@#@#@#@#@#@#@#@#@1https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b —— 这个 URL 没有对应资源,最终触发一次无意义的页面重载(地址栏变灰、滚动回顶),而不是预期的平滑锚点定位。
常见现象包括:
- 点击“回到顶部”链接后页面闪一下、滚动重置
-
@#@#@#@#@#@#@#@#@#@2https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b,再被新窗口打开 → 空白页显示https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b - 浏览器控制台报错:
Failed to execute 'open' on 'Window': Invalid URL(尤其在 Chrome 120+) - 如果页面还用了
<form method="POST"></form>,submit 也会被新窗口提交,用户看不到响应,也回不到原页面
规避方式:
- 不要给 base 同时设
href和target,尤其当页面含大量href="https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b" - 若必须开新窗,只对明确需要的链接加
target="_blank",并配rel="noopener" -
target属性优先级低于 a 标签自身值,所以@#@#@#@#@#@#@#@#@#@3https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b,说明 base 正在生效干扰;如果是@#@#@#@#@#@#@#@#@#@4https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b,说明 base 被忽略(可能 href 值非法,比如缺结尾/)
真正容易被忽略的点是:base 的 href 值哪怕只错一个字符(如写成 "/app" 没加末尾 /),Firefox/Chrome 就会静默丢弃整条 base,所有相对路径退回到页面 URL 解析 —— 此时锚点看似正常,但图片/CSS 全部 404,问题分散且难定位。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











