基于vue,解决打开新窗口被浏览器拦截的问题
首先,我們先來說一下在什么情況下,新窗口會被阻截,以及阻截的原因。
當使用 window.open(url,"_blank")打開新窗口時,如果url是通過ajax從后臺獲取
到的時候,瀏覽器就會出現攔截的問題。
因為,當瀏覽器檢測到非用戶操作產生的新彈出窗口,則會對其進行阻止。因為瀏覽器認為這可能是一個廣告,不是一個用戶希望看到的頁面。
那么,我們就要考慮,如何才能將ajax請求的url,不被瀏覽器攔截呢?
我之前也看過很多方法是說,先在發送ajax之前,打開一個空白頁,然后,再將ajax獲
取到的url賦給新打開的空白窗口,確實,這樣解決了上面說的問題,但是我認為,這樣的體驗并不好,因為如果,在網速比較慢的情況下,ajax請求的時間過長,url長時間不能賦值,新窗口就會出現空白時間過長的問題。這樣用戶就可能將空白頁手動關掉,從而就會出現一系列的問題。
那么,還有什么方法可以解決呢? 好了,重點來了(此處方法是基于vue的,其他框架或源生,思路是一樣的,可以自行研究)
上邊我們說了,通過ajax獲取到的url,會被瀏覽器判定為不安全鏈接,被攔截,那么我們還有沒有其他辦法呢?當然!前幾天,我在一個項目中看到過一個這樣的需求,點擊按鈕,發送ajax,請求一個遠程連接的url,將獲取到的url放在一個彈框中顯示,然后,再點擊這個url連接,跳轉至這個url頁面。這時,我發現,并沒有被瀏覽器攔截,因為這個url,不是直接從ajax獲取到的,而是,先通過ajax獲取一個url賦值給一個參數,然后點擊鏈接時,將那個參數賦值給window.open(url,"_blank")中的url。
然后,我便想到了,如果我也將ajax獲取到的url賦值給一個固定的參數,然后,我們在watch方法中(vue監聽的方法)監聽這個參數,當這個參數發生變化時直接跳轉就可以了。
總結
以上是生活随笔為你收集整理的基于vue,解决打开新窗口被浏览器拦截的问题的全部內容,希望文章能夠幫你解決所遇到的問題。