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