在回调函数(最多见的就是发送ajax请求成功或者失败回调函数)
中使用window.open
时,在Safari浏览器
会无效,缘由是Safari的安全机制将其阻挡了。
上有政策,下有对策,解决办法为:ios
假设使用了我在Vue中封装的
动态Axios配置 演示发送
post
请求,其它使用回调函数的使用方法同理。
// 这个是模仿在Vue中,且使用了ES6,不使用则把let换为var即可 methods: { sendData() { let winOpen = window.open("", "_blank"); //首先打开一个新页面 post("xx/xx/", data).then( res => { let link = res.link; setTimeout(function() { //这里使用setTimeout很是重要,没有将没法实现 //缘由是window.open会中断正在执行的进程,这样能保证其它代码执行完成再执行这个。 winOpen.location = link; //改变页面的location }, 100); }, err => { console.log(err.msg); }) } }