瀏覽器攔截新視窗問題的解決方案和優化方案

2021-10-10 09:34:38 字數 1218 閱讀 4857

瀏覽器攔截新視窗問題總結

一般情況下,對於使用者正常操作手動觸發的a標籤、window.open、form表單提交等方式開啟新視窗時是不會被瀏覽器攔截的,可以正常的開啟。但是由於業務需求當我們需要在非同步的程式中去開啟新視窗時,由於瀏覽器的安全機制,使用者未始終允許的情況下,可能會觸發到瀏覽器攔截,無法正常直接彈出。

幾種開啟新視窗的方式

1.window.

open()

2.建立a標籤target=_blank,手動觸發a.

click()

3.建立form表單,手動觸發form.

submit

()

解決方法

1,我們可以在非同步程式呼叫之前先開啟乙個新視窗,並指定視窗名稱

window.

open

("about:blank"

,'windowname');

$.ajax()

;

2,在非同步程式中處理建立a標籤,並將a標籤的target屬性指向新視窗的名稱windowname。form表單方式同理。

window.

open

("about:blank"

,'windowname');

$.ajax(}

);

優化方案

問題1:由於上述方法中開啟的是乙個空白頁面,對使用者很不友好,所以我們可以在專案中新增乙個loading頁面,然後開啟它。

問題2:由於上述新視窗名稱寫了乙個固定的值,會導致開啟新視窗後新視窗沒有關閉時,再次開啟新視窗時就會繼續指向相同名稱的視窗,而不是繼續開啟新視窗,所以建議在視窗名稱上新增時間戳。

假設過度頁面的路由為:/loading,那麼:

let windowname =

'windowname'

+new

date()

.gettime()

;window.

open

("/loading"

, windowname);$.

ajax(}

);

現在新開視窗時就會開啟loading頁面,表現乙個友好的過度效果,等非同步程式處理完後就會指向對應的頁面。

ajax開啟新視窗被瀏覽器攔截的解決辦法

先開始開啟乙個空的新視窗,然後改變新視窗的url,具體 為 var wd window.open ajax success function data else error function data 這種實現方式有個弊端,就是不管ajax有沒有成功,都會執行 var wd window.open ...

Ajax 請求後開啟新視窗被攔截的解決方案

公司業務上有個場景,需請求後台獲取支付鏈結位址,再開啟位址引導使用者購買。這樣的場景在其他企業應該也很場景。但是遇到個很常見的問題,ajax後直接用window.open url 會被瀏覽器作為廣告攔截。解決方案 方案一,在ajax請求前新開預設視窗 let win window.open blan...

瀏覽器快取的解決方案

瀏覽器快取的解決方案 摘要 瀏覽器快取的解決方案,包括傳統前端和現代前端。前言 本文只針對檔案請求 html css js 進行分析,但不涉及json資料請求。1 當瀏覽器向伺服器發起請求,如果請求正常,狀態是200。2 瀏覽器接收到請求結果後,如果會根據響應頭設定的快取規則,把請求結果存起來。3 ...