如何在 Next.js 中点击按钮跳转到外部链接并在新标签页打开

在 next.js 中,可通过将按钮嵌套在 `` 标签内并设置 `target="_blank"` 和 `rel="noreferrer"` 实现外部链接的新标签页跳转,既符合语义化规范,又确保安全性和兼容性。

在 Next.js(尤其是 App Router 或 Pages Router)中,直接为

✅ 正确做法:将

  @@##@@
  

Go To Google

@@##@@

? 关键说明:

  • target="_blank":强制在新标签页(或窗口)中打开链接;
  • rel="noreferrer noopener":
    • noreferrer 防止目标页面通过 document.referrer 获取来源页 URL,提升隐私性;
    • noopener 防止新页面通过 window.opener 访问原页面的 window 对象(避免潜在的安全风险,如恶意页面调用 window.opener.location.replace() 进行钓鱼);
  • 路径前加 /(如 /assets/...):确保资源路径相对于应用根目录,适配 Next.js 的静态文件服务机制(public 目录下文件需以 / 开头引用);
  • alt 属性:为图标添加有意义的替代文本,增强可访问性(WCAG 合规必需)。

⚠️ 注意事项:

  • ❌ 不要使用
  • ❌ 避免仅写 rel="noreferrer" 而遗漏 noopener:二者应共存,noopener 是防范 window.opener 攻击的核心;
  • ✅ 若需动态链接或条件跳转,可将 href 设为变量(如 href={externalUrl}),但仍建议保持 包裹结构。

总结:在 Next.js 中实现“按钮式外观 + 外部链接 + 新标签页打开”,应优先采用语义化 标签方案——它简洁、安全、可访问、无需 JavaScript 即可工作,是现代 Web 开发的标准实践。