window.open在Safari瀏覽器出現的問題

回調函數(最多見的就是發送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);
      })
  }
}
相關文章
相關標籤/搜索