【jquery】ajax 请求成功后新开窗口被拦截解决方法
生活随笔
收集整理的這篇文章主要介紹了
【jquery】ajax 请求成功后新开窗口被拦截解决方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
問題:
前面開發項目時碰到一個問題,ajax 異步請求成功后需要新開窗口打開 url,使用的是 window.open() 方法,但是很可惜被瀏覽器給攔截了,怎么解決這個問題呢?
分析:
瀏覽器之所以攔截新開窗口是因為該操作并不是用戶主動觸發的,所以它認為這是不安全的就攔截了(不過如果是 _self 的話就不會有這個限制),即使 ajax 回調函數中模擬執行 click 或者 submit 等用戶行為(trigger('click')),瀏覽器也會認為不是由用戶主動觸發的,因此不能被安全執行,所以被攔截。
解決方法:
1、異步改為同步,即:async:false
2、將新開窗口指向為一個對象,然后修改對象的 url,比如:
$('.task').bind('click',function(){var w = window.open();$.ajax({type: 'POST',url: '/surveyTask',dataType: 'json',error: function(){w.close();},success: function(res){w.location = res.url;}}); });最后需要說明的是:網上的動態添加 form 新開窗口的方法,并不適合 ajax 請求,至少博主測試了下仍然被瀏覽器所攔截。
參考資料:彈窗解決最終奧義,人類再再也無法阻止彈窗了!
總結
以上是生活随笔為你收集整理的【jquery】ajax 请求成功后新开窗口被拦截解决方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图标之家
- 下一篇: 自适应后的页面用户点击后会放大