ajax回撥中使用window.open彈窗被chrome攔截的問題
文章轉自:https://segmentfault.com/q/1010000006760018
具體解決方法:
這種情況出現是由於window.open的執行時機,你的window.open是在ajax回撥中執行,無論是同步還是一步,等待ajax返回結果需要一定的時間,當你得到結果再去執行window.open,chrome認為這是一種不友好的行為(非使用者主動點選開啟彈窗),所以會被遮蔽。
碰巧在之前的專案中也遇到過,試了各種方法,最後發現沒有什麼特別完美的方法可以繞開這個限制,使用了一個方法:使用者點選時立馬開啟一個空白頁,然後等ajax回來的結果,拿到連結地址,替換掉之前空白頁的url。
$('#a').on('click', function(e){
e.preventDefault();
var wi = window.open('about:blank', '_blank');
setTimeout(function(){ // 非同步,模擬ajax
wi.location.href = 'http://google.com';
}, 500);
});
如果網路正常能返回url地址倒不會造成太大的使用者體驗上的問題,就怕沒法正常返回url,這個時候使用者那塊就出現了一個空白頁,如果產品必須重新開啟且能返回url的機率非常高,相對來說這個方案沒那麼糟糕,如果產品沒法接受這種情況,那就老老實實重新整理當前頁吧。
相關文章
- 解決ajax回撥window.open瀏覽器阻止彈窗問題瀏覽器
- JavaScript檢測window.open()彈出視窗是否被攔截JavaScript
- 使用window.open開啟新視窗被瀏覽器攔截的解決方案瀏覽器
- 攔截器的使用問題
- 視窗被攔截的解決方法
- ajax中回撥的幾個坑
- C#使用委託實現函式回撥,方法呼叫攔截C#函式
- 導彈攔截
- [題解] [NOIP 1999] 導彈攔截
- Spring MVC 中的攔截器的使用“攔截器基本配置” 和 “攔截器高階配置”SpringMVC
- Activity生命週期回撥是如何被回撥的?
- Spring Boot中攔截器的使用Spring Boot
- P1254 導彈攔截
- flume自定義攔截器遇到的問題
- 關於 PayPal 支付回撥的問題
- 「 題解 」P2487 [SDOI2011]攔截導彈
- 資訊學奧賽一本通 1322:攔截導彈問題(evd)
- React、Axios、MockJs實現Ajax的請求攔截ReactiOSMockJS
- win10 microsoft edge網址被攔截如何取消攔截Win10ROS
- 洛谷 P1020 導彈攔截 菜鳥題解
- ajax 下載Excel 新增回撥函式Excel函式
- 不能顯式攔截ajax請求的302響應?
- 解決ajax請求引數過多導致引數被截斷的問題
- go-zero之支付回撥問題Go
- 支付寶支付回撥觸發問題
- SpringMVC中的攔截器SpringMVC
- grpc中的攔截器RPC
- Android之Window和彈窗問題Android
- 洛谷 P1020 導彈攔截
- Chrome彈窗提醒Flash將不再支援Chrome
- Spring Boot第七彈,別再問我攔截器如何配置了!!!Spring Boot
- spring mvc 攔截器的使用SpringMVC
- 解決spring cloud Feign遠端呼叫服務,新增headers解決攔截器攔截問題SpringCloudHeader
- win10怎麼攔截電腦彈窗廣告_win10如何阻止電腦彈出廣告Win10
- 【axios】XHR的ajax封裝+axios攔截器呼叫+請求取消iOS封裝
- 微信域名攔截檢測 查詢微信中域名是否被攔截的最新方法
- 從源頭上解決微信域名攔截問題
- 解決ELK日誌被截斷的問題