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瀏覽器阻止彈窗問題瀏覽器
- 防止window.open()函式彈出視窗被攔截函式
- JavaScript檢測window.open()彈出視窗是否被攔截JavaScript
- 使用window.open開啟新視窗被瀏覽器攔截的解決方案瀏覽器
- 視窗被攔截的解決方法
- 如何防止window.open彈窗被瀏覽器遮蔽瀏覽器
- ajax中回撥的幾個坑
- safari 回撥中window.open無法執行
- js檢測window.open()彈出視窗是否被關閉JS
- TabLayout 踩坑之 onTabSelected 沒有被回撥的問題TabLayout
- [題解] [NOIP 1999] 導彈攔截
- Activity生命週期回撥是如何被回撥的?
- 關於頁面中彈窗的定位問題
- ajax回撥函式執行順序帶來的同步非同步問題函式非同步
- js攔截全域性ajax請求JS
- Android Webview攔截ajax請求AndroidWebView
- [APEX] 解決chrome中開發apex應用時的持續彈窗認證問題Chrome
- flume自定義攔截器遇到的問題
- Spring Boot中攔截器的使用Spring Boot
- win10 microsoft edge網址被攔截如何取消攔截Win10ROS
- Mybatis中的攔截器MyBatis
- OSSPostObject未發生回撥的問題排查Object
- handle中存在非同步操作,window.open被瀏覽器阻止的問題非同步瀏覽器
- SpringBoot攔截器中service或者redis注入為空的問題Spring BootRedis
- win10怎麼攔截電腦彈窗廣告_win10如何阻止電腦彈出廣告Win10
- 關於AOP攔截器使用的一個問題,尋求解決方案
- ajax 下載Excel 新增回撥函式Excel函式
- go-zero之支付回撥問題Go
- grpc中的攔截器RPC
- AngularJS中的http攔截AngularJSHTTP
- Chrome彈窗提醒Flash將不再支援Chrome
- 微信域名攔截檢測 查詢微信中域名是否被攔截的最新方法
- 從源頭上解決微信域名攔截問題
- React、Axios、MockJs實現Ajax的請求攔截ReactiOSMockJS
- js實現window.open()彈出視窗和父視窗之間相互操作JS
- Android之Window和彈窗問題Android
- 微信域名攔截查詢 如何批次查詢我們的域名在微信中是否被攔截
- Spring Boot第七彈,別再問我攔截器如何配置了!!!Spring Boot