日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > vue >内容正文

vue

基于vue,解决打开新窗口被浏览器拦截的问题

發(fā)布時間:2024/1/8 vue 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于vue,解决打开新窗口被浏览器拦截的问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

首先,我們先來說一下在什么情況下,新窗口會被阻截,以及阻截的原因。
當使用 window.open(url,"_blank")打開新窗口時,如果url是通過ajax從后臺獲取
到的時候,瀏覽器就會出現(xiàn)攔截的問題。
因為,當瀏覽器檢測到非用戶操作產(chǎn)生的新彈出窗口,則會對其進行阻止。因為瀏覽器認為這可能是一個廣告,不是一個用戶希望看到的頁面。

那么,我們就要考慮,如何才能將ajax請求的url,不被瀏覽器攔截呢?
我之前也看過很多方法是說,先在發(fā)送ajax之前,打開一個空白頁,然后,再將ajax獲
取到的url賦給新打開的空白窗口,確實,這樣解決了上面說的問題,但是我認為,這樣的體驗并不好,因為如果,在網(wǎng)速比較慢的情況下,ajax請求的時間過長,url長時間不能賦值,新窗口就會出現(xiàn)空白時間過長的問題。這樣用戶就可能將空白頁手動關掉,從而就會出現(xiàn)一系列的問題。

那么,還有什么方法可以解決呢? 好了,重點來了(此處方法是基于vue的,其他框架或源生,思路是一樣的,可以自行研究)
上邊我們說了,通過ajax獲取到的url,會被瀏覽器判定為不安全鏈接,被攔截,那么我們還有沒有其他辦法呢?當然!前幾天,我在一個項目中看到過一個這樣的需求,點擊按鈕,發(fā)送ajax,請求一個遠程連接的url,將獲取到的url放在一個彈框中顯示,然后,再點擊這個url連接,跳轉(zhuǎn)至這個url頁面。這時,我發(fā)現(xiàn),并沒有被瀏覽器攔截,因為這個url,不是直接從ajax獲取到的,而是,先通過ajax獲取一個url賦值給一個參數(shù),然后點擊鏈接時,將那個參數(shù)賦值給window.open(url,"_blank")中的url。
然后,我便想到了,如果我也將ajax獲取到的url賦值給一個固定的參數(shù),然后,我們在watch方法中(vue監(jiān)聽的方法)監(jiān)聽這個參數(shù),當這個參數(shù)發(fā)生變化時直接跳轉(zhuǎn)就可以了。

data() {return {newWin:''} }, watch:{newWin(){window.open(this.newWin,"_blank")} }, methods:{// 點擊發(fā)送ajax獲取url的事件async getUrl(){const { data:res } = await this.getRequest('XXXXXXXXXX',{XXX:XXXXX})this.newWin = res.data.url} }

總結(jié)

以上是生活随笔為你收集整理的基于vue,解决打开新窗口被浏览器拦截的问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。