H5下载发票是跳一个后端返回的链接,但直接用window.open有些会被浏览器(Safari)拦截

在axios中进行window.open会被浏览器拦截

法1:但用户自己点击的链接不会,可以创建a标签模拟用户点击;

法2:在axios之前就window.open

1
2
3
4
5
6
7
8
xx.addEventListener(‘click‘, function () {
// 打开页面,此处最好使用提示页面
var newWin = window.open(‘loading page‘);
ajax().done(function() {
// 重定向到目标页面
newWin.location.href = ‘target url‘;
});
});

以上方法其实是打开了两个地址,所以建议大家打开第一个地址的时候给出一个类似‘当前页面正在加载中,请稍后。。’的简单提示页,这样可以避免打开两次真正的目标页面,让用户察觉到页面的重定向。

法3(终极方法,成功实践):

1
window.location.href='target url'