React/JavaScript中如何打开新窗口而非新标签页?
解决window.open打开新标签页而非弹窗的问题
你的代码存在两个关键问题,导致无法弹出指定尺寸的窗口:
- 参数传递错误:
window.open的第四个参数仅适用于非_blank的目标名称,你把noopener,noreferrer单独作为第四个参数传入,会导致第三个参数中的窗口尺寸配置被浏览器忽略,触发默认的标签页打开行为。正确做法是将这两个属性合并到第三个参数的配置字符串中。 - 定义的窗口参数未使用:你声明了
params变量但未在window.open中引用,导致其中的窗口样式配置完全没生效。
修复后的代码如下:
const raiseInvoiceClicked = () => { // 整合所有窗口配置项,包括noopener和noreferrer let params = `scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no, width=200,height=200,left=100,top=100,noopener,noreferrer`; const newWindow = window.open("http://localhost:3000", '_blank', params); if (newWindow) newWindow.opener = null; }
额外注意:
- 避免将
width/height设为0、left/top设为负数,否则窗口会不可见;建议设置合理的可见位置和尺寸。 - 浏览器弹窗拦截机制会阻止非用户主动交互触发的弹窗,确保该函数是由用户点击等操作触发的,否则仍可能被拦截并以标签页形式打开。
内容的提问来源于stack exchange,提问作者etranz
相关产品推荐
相关产品推荐

