在
回調(diào)函數(shù)(最常見的就是發(fā)送ajax請(qǐng)求成功或者失敗回調(diào)函數(shù))
中使用window.open
時(shí)锌订,在Safari瀏覽器
會(huì)無效攀涵,原因是Safari的安全機(jī)制將其阻擋了牡属。
上有政策渊涝,下有對(duì)策,解決辦法為:
假設(shè)使用了我在Vue中封裝的 Axios配置 演示發(fā)送
post
請(qǐng)求砍鸠,其它使用回調(diào)函數(shù)的使用方法同理扩氢。
// 這個(gè)是模仿在Vue中,且使用了ES6爷辱,不使用則把let換為var便可
methods: {
sendData() {
let winOpen = window.open("", "_blank"); //首先打開一個(gè)新頁面
post("xx/xx/", data).then( res => {
let link = res.link;
setTimeout(function() { //這里使用setTimeout非常重要录豺,沒有將無法實(shí)現(xiàn)
//原因是window.open會(huì)中斷正在執(zhí)行的進(jìn)程,這樣能保證其它代碼執(zhí)行完成再執(zhí)行這個(gè)饭弓。
winOpen.location = link; //改變頁面的location
}, 100);
}, err => {
console.log(err.msg);
})
}
}