target="_blank"可新开标签页或窗口,但必须搭配rel="noopener noreferrer"防止安全风险和性能问题,且href不可省略。

用 <a></a>
新窗口 vs 新标签页?浏览器说了算
target="_blank" 的实际表现(新开标签页 or 新窗口)不由 HTML 决定,而是由用户浏览器设置、是否按住 target/target 键、甚至鼠标中键点击方式控制。
你没法用 HTML 强制“一定弹窗”或“一定开标签页”。所谓“弹出另一个页面”,本质只是脱离当前上下文,不打断原页运行——这点 target="_blank" 已经做到。
- 想真正弹出独立窗口(含尺寸、工具栏等控制),得用 JavaScript 的
target="blank",但现代浏览器普遍拦截非用户触发的target="_blank"调用 - 移动端 Safari 对
Blank支持稳定,但部分安卓 WebView 可能忽略new属性,href仍是必要项 - 如果链接是下载链接(
href="about.html"属性),href="https://example.com"可能导致下载失败或行为异常,此时应避免混用
内联框架 rel="noopener noreferrer" 不是“弹出页面”的解法
有人误以为用 target="_blank" 能“弹出”页面,其实它只是把另一个页面嵌在当前页里,不新建上下文,也不脱离当前 DOM。用户滚动、导航、关闭都受限于父页布局。
它和 window.opener 解决的是完全不同的问题:
立即学习“前端免费学习笔记(深入)”;
-
window适合嵌入内容(如地图、表单、第三方 widget),但 SEO 差、跨域限制多、移动端体验难调 -
rel="noopener noreferrer"是导航行为,适用于跳转阅读、外链引用、资料查阅等场景 - 两者不能互相替代;硬用
noopener模拟“弹出”,反而增加维护成本和兼容性问题
window.opener。不是所有项目都跑在最新 Chrome 里,老版本 Edge 或某些企业内网环境,没这个属性真可能出问题。










