1. 程式人生 > >window.open()被攔截問題

window.open()被攔截問題

沒有 win 標簽頁 詳情 頁面 主動 需求 同步 bsp

最近做項目的時候遇到一個需求,在商品詳情頁面中點擊購買按鈕,之後再新標簽頁中打開生成的訂單頁面,所以想用window.open()來實現。但是測試的時候發現打開的鏈接被瀏覽器攔截。

之後,開始在網上查找解決方案,看到最常用的一個是新建一個a標簽,模擬點擊測試,多次測試後發現並沒有用。然後又嘗試了幾個其他常見的方法,還是都會被攔截。

然後,發現window.open()攔截是有條件的。一般通過用戶的點擊事件觸發的在新標簽頁中打開鏈接,瀏覽器是不會攔截的,因為這種形式打開新窗口瀏覽器會認為是用戶自己需要的。

在我的項目中,是需要在ajax異步請求成功後需要在新窗口中打開返回的url地址,使用window.open()會被攔截,因為這種情況下瀏覽器認為該操作不是用戶主動觸發的,所以會攔截。

解決辦法:

ajax請求由異步改為同步。(async:false) (測試有效)。

window.open()被攔截問題