vue window.open無法打開新窗口


今天遇到vue window.open無法打開外部地址,我的場景是HTTPS打開HTTP外部地址。
在網上看了很多文檔,使用以下三種方法發現都不可以。

1、通過a標簽加onclick跳轉

 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、let reg=new RegExp('http://','g')
let newMsg=JSON.stringify(url).replace(reg,'https://');
window.open(res.data.url)

2、HTTP更改為HTTPS地址也可以解決,但是請求時間過長會出現攔截警告,運行即可。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM