用户单击上下文菜单以创建新项目,该项目保存为异步,并在保存完成时在新选项卡中打开URL。多数民众赞成我想要的,但Chrome在弹出窗口中打开网址而不是新标签。在saveasync-then-handler之外打开窗口时,它工作正常(注释代码),但不在内部。我能做什么在处理程序中获得相同的行为?我尝试过使用open.bind(这个)但是没有帮助...
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请求的响应之类的异步请求中时它可以工作,所以我们在请求之前打开它并在我们得到响应之后重定向它。