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

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

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

法2:在axios之前就window.open

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

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

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

window.location.href='target url'

我的博客主页 :https://qingmuzhang.gitee.io/

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐