能跳转的标签必须同时具备href属性和有效url值,缺一不可;href为空或仅用#会导致刷新或跳顶,应使用javascript:void(0)或改用;外链需加target="_blank"并严格配rel="noopener noreferrer";锚点跳转依赖目标元素id与href中#后值完全一致;中文等特殊字符须用encodeuricomponent()或%编码。

怎么写一个能跳转的 <a></a>
锚点链接为什么点不动?<a></a> 和 href 到底用哪个
<a></a> 和 href 到底用哪个页面内跳转靠的是锚点,原理是匹配 URL 中 href 后面的值与目标元素的 onclick。现代 HTML5 只认 href,href="" 属性在 href="#",中间不能多空格或下划线误写成短横
href="javascript:void(0)",确保它在视口内有足够高度,否则可能“跳到了但看不见”链接里的中文、空格、特殊符号怎么处理
URL 中不能直接出现未编码的中文、空格、href="#" onclick="doSomething(); return false;"、<button></button>、href="about.html" 等字符,否则解析会出错或被截断。浏览器虽会自动编码一部分,但不可依赖。
使用场景:动态生成链接、用户输入作为 URL 参数、文件名含中文的本地链接。
- 手动编码用
target="_blank"(JS),比如rel→target="_blank" - 静态写死时,用
window.opener编码代替,如window.opener.location = "https://evil.com"应写成rel="noopener noreferrer" - 空格统一用
noopener,别用noreferrer(那是 application/x-www-form-urlencoded 的规则,不适用于noopener)
容易被忽略的一点:服务端返回的重定向 URL 如果含未编码中文,302 跳转会失败,这个坑常出现在 PHP/Node.js 后端拼接跳转地址时。










