最稳妥的跳转方式是直接使用 标签;onclick 适合需前置逻辑判断的场景,但易因返回值缺失导致意外跳转,且 onclick="location.href=..." 会绕过浏览器原生导航机制,丢失 history 记录、不支持右键新标签打开、可能被 csp 拦截,也不触发 beforeunload,错误时静默失败。

直接用 @#@#@#@#@#@#@#@#@#@0 → 日志打了,但照样跳转
@#@#@#@#@#@#@#@#@#@1
@#@#@#@#@#@#@#@#@#@2,然后 JS 绑定:document.getElementById('myLink').addEventListener('click', e => { e.preventDefault(); doLog(); location.href = 'page.html'; });
用 javascript:void(0) 还是 # 作 href 值?
选 javascript:void(0)。用 # 会导致页面滚动到顶部,尤其在长页面中体验极差;且 # 会被解析为锚点,影响 URL 状态和 history API 行为。
-
href="#":点击后页面 scrollTop 归零,不可预测 -
href="javascript:void(0)":无副作用,语义明确是“空操作” - 注意:
javascript:协议在严格 CSP 策略下可能被禁用,生产环境建议优先用button+ 事件监听,而非伪装成链接
真正关键的不是怎么写那一行代码,而是想清楚:这个跳转是否需要被浏览器历史记录、是否要支持右键菜单、是否依赖 URL 参数传递——这些决定了该用 <a></a> 还是 <button></button>,而不是反过来让 DOM 元素去迁就 JS 写法。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











