在回調函數(最多見的就是發送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); }) } }