必须同时添加target="_blank"和rel="noopener noreferrer"才能安全在新窗口打开;仅target="_blank"会被现代浏览器降级为当前页跳转,且存在tabnabbing攻击风险。

HTML居中超链接怎么跳转新窗口?属性添加完整步骤
居中只是样式问题,不影响跳转逻辑;真正决定“是否新窗口打开”的,只看 target 和 rel 两个属性——漏掉任何一个,都可能出问题或不安全。
为什么加了 target="_blank" 还是在当前页打开?
常见原因不是居中写法导致的,而是以下几类硬性限制:
-
href值为空、是#或拼写错误(比如写成http://example.com没加s),浏览器会忽略target - 页面被嵌在
<iframe></iframe>中,且父页面设置了sandbox属性(如sandbox="allow-scripts"但没加allow-popups),target="_blank"将静默失效 - 移动端 WebView(尤其旧版 Android)默认禁用弹窗,需额外配置
WebSettings.setJavaScriptCanOpenWindowsAutomatically(true) - 写了
target="_blank"但引号用了中文全角(“”),HTML 解析失败,整个属性被丢弃
target="_blank" 必须配 rel="noopener" 吗?
必须。不加会有真实安全风险:
- 新页面可通过
window.opener.location把你的原页面重定向到钓鱼页 - 新页面还能读取你页面的 DOM(如果同源)甚至调用 JS 函数
- Chrome 88+ 已默认补上
noopener,但 Safari 和旧版 Firefox 不会,不能依赖 - 推荐写法:
rel="noopener noreferrer"——noreferrer还能阻止Referer泄露
居中 + 新窗口跳转的最小可行代码
居中用 CSS,跳转靠属性,两者互不干扰。下面这段可直接复制使用:
<p style="text-align: center;"> <a href="https://example.com" target="_blank" rel="noopener noreferrer">居中的外部链接</a> </p>
注意点:
- 不要用
<center></center>标签(已废弃),用style="text-align: center"或现代 Flex/Grid - 如果居中的是整块导航栏,建议把
text-align: center加在父容器上,而非每个<a></a> - 若链接文字含图片,
<a></a>里直接嵌<img>即可,居中逻辑不变
最容易被忽略的是:哪怕你只在内部测试环境点开一个外部链接,只要没加 rel="noopener",就等于把原页面的控制权部分交给了目标页面——这不是“可能”,而是浏览器明确允许的行为。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











