问题

  • 在 Mac 上的 safari 下,请求一个接口,并在接口回调中调用 window.open 打开新窗口,safari 会静默阻止,啥错都不报也不给你开窗口。。很是尴尬

解决方法

在请求之前先创建 window 的实例,并在请求回调成功后修改 location 进行调整,代码如下:

var windowReference = window.open();

myService.getUrl().then(function(url) {
  windowReference.location = url;
});

这个方法的缺点是用户会看到打开了一个空白页,过了一会(请求成功的时间)这个空白页才进行重定向。

See: SO