在一个新的选项卡中打开一个url,而不是一个弹出(点击后)

Opening an url in a new tab instead of a popup (after click)

本文关键字:一个 选项 url      更新时间:2023-09-26

用户单击上下文菜单创建新项,该项被异步保存,保存完成后在新选项卡中打开url。这是我想要的,但Chrome是在一个弹出窗口,而不是一个新的选项卡打开url。当在saveasync-then处理程序外部打开窗口时,它可以正常工作(注释的代码),但在内部不行。我能做的是在处理程序中获得相同的行为吗?我试过使用open.bind(this),但没有帮助…

var open = function() {
  var win = window.open('/page', '_blank');
  win.focus();
};
client.SaveAsync().then(open); // This doesn't work, opens in a popup window
open(); // This works, opens in a new tab

有同样的问题,这是浏览器保护。通过一个变通方法解决了这个问题:

var win = window.open('/page', '_blank');
client.SaveAsync().then(function() {
    win.open('/page', '_self');
});

技巧是,当它不在异步请求中(如http请求的响应)时,它可以工作,所以我们在请求之前打开它,并在获得响应后重定向它。