You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JavaScript在新标签页打开URL且不切换至该标签页

实现新标签页后台打开链接的解决方案

你遇到的问题是主流浏览器现在对脚本控制焦点的行为有严格限制,原代码里的window.focus()会被浏览器直接忽略,导致无法保持原页面的焦点。下面是两个可行的解决方法:

方法一:优化JS逻辑

通过给焦点切换加一点延迟,避开浏览器的即时拦截策略,同时确保新窗口成功打开后再执行焦点切换:

function openInBackground(url) {
  const newWindow = window.open(url, '_blank');
  // 确认新窗口未被拦截
  if (newWindow) {
    // 延迟100ms切回原页面焦点
    setTimeout(() => {
      window.focus();
    }, 100);
  }
}

对应的HTML链接代码:

<a href="https://www.bing.com/search?q=2146217" onclick="openInBackground(this.href); return false;">Click Me</a>

方法二:HTML+极简JS结合

直接用HTML的target="_blank"打开新标签页,再通过延迟脚本把焦点拉回原页面,这种方式更简洁:

<a href="https://www.bing.com/search?q=2146217" target="_blank" rel="noopener noreferrer" onclick="setTimeout(() => window.focus(), 100);">Click Me</a>

注意事项

  • 不同浏览器的行为可能略有差异,部分浏览器会优先遵循用户的全局设置(比如默认后台打开新标签页)
  • 延迟100ms是为了适配浏览器的初始化流程,避免焦点切换被安全策略拦截
  • 加上rel="noopener noreferrer"是安全最佳实践,能防止新页面篡改原页面,同时提升加载性能

内容的提问来源于stack exchange,提问作者denoryprogrammer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 16:41:03