vue解決打開新窗口被攔截的的實戰方法

解決方案:

1. 使用a標籤替代

給出如下函數,將此函數綁定到click的事件回調中,就可以避免大部分瀏覽器對窗口彈出的攔截。

 newLink(url) {
     let a = document.createElement(‘a‘);
     a.setAttribute(‘href‘, url);
     a.setAttribute(‘target‘, ‘_blank‘);
  }

2. 使用form的submit方法打開一個頁面

這種方法需要構造一個from,然後由js代碼觸發form的submit,將表單提交到一個新的頁面,

如果需要傳遞參數時,需要使用 POST 方法, 默認的 GET 方法無法傳遞參數。也就是新頁面的url中沒有參數部分。如:

newLink(url){
    let form = document.createElement('form');
    form.action = 'www.baidu.com?id=1';
    form.target = '_blank';
    form.method = 'POST';
    document.body.appendChild(form);
    form.submit();
}

3、終極解決方案–先彈出窗口,然後重定向

第三種方案,其實是一種變通方案,核心思想是:先通過用戶點擊打開頁面,然後再對頁面進行重定向。示例代碼如下:

newLink(url){
     // 打開頁面,此處最好使用提示頁面
    let newLink = window.open(‘loading page‘);
    axios.get(url)
        .then(function (response) {
        newLink.location.href = url;;
    })
        .catch(function (error) {
        console.log(error);
    })
}

參考鏈接1

參考鏈接2

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章