日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

ie9浏览器两个ajax请求同步不兼容_浏览器拦截问题

發布時間:2025/3/21 HTML 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ie9浏览器两个ajax请求同步不兼容_浏览器拦截问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題描述:

1、在JS中直接使用window.open(url,"_blank")來打開新窗口是會被攔截的。PS:window.open(url,”_self”)改變當前的窗口可以生效。

2、在ajax異步請求完成后使用window.open來打開新窗口也會出現被攔截現象。

原因分析:

瀏覽器為了維護用戶安全和體驗,對于非用戶操作產生的新彈出窗口會對其進行阻止,因為瀏覽器認為這不是一個用戶希望看到的頁面。

各瀏覽器對攔截時機的判斷不一致。

對于放在ajax完成后的代碼,瀏覽器會認為是網站自主彈出的窗口,有“流氓”的嫌疑。各瀏覽器的攔截反應也有所不同。

解決方案:

方案一、

創建一個a標簽,利用a標簽跳轉,能解決大多數瀏覽器兼容問題,但是這種方法寫在ajax異步請求完成后調用無效

function openWin(url) {var a = document.createElement("a"); //創建a標簽a.setAttribute("href", url);a.setAttribute("target", "_blank");document.body.appendChild(a);a.click(); //執行當前對象 } openWin("./page/......");

方案二、

模擬form表單提交,能解決大多數瀏覽器兼容問題,但是這種方法寫在ajax異步請求完成后調用無效。

var form = document.createElement('form'); form.action = '"./page/a.html?id=1'; form.target = '_blank'; form.method = 'POST'; document.body.appendChild(form); form.submit();

方案三、

在ajax調用之前先打開窗口,然后再設置新窗口的url來達到跳轉的效果,但是該方法如果ajax響應太慢,則會出現一個空白窗口,影響用戶體驗,所以建議給該新窗口增加提示“正在拼命加載中”,但是我覺得這個并不是最好的解決方案。

//先在ajax函數之前打開新窗口,后再加載url $('#btn').click(function () {//打開一個不被攔截的新窗口var win = window.open();win.document.body.innerHTML="正在拼命加載中......";$.ajax({url: 'a.com',success: function (url) {//修改新窗口的urlwin.location.href = url;}}); });

方案四、

把ajax異步改成同步,該方法會阻塞瀏覽器運行導致卡頓,經過測試,就算改成同步,chrome還是會阻攔,Firefox不會阻攔

//先在ajax同步函數之后打開新窗口 $('#btn').click(function () {$.ajax({url: 'a.com',async: false, // 同步,意味著執行該ajax完成后,后續代碼才繼續運行success: function (url) {}});//執行完ajax后再打開新窗口window.open("./page/......", "_blank"); });

方案五、

把ajax執行完后,彈出一個彈出框提示用戶,由用戶確認點擊打開,這個方法目前感覺是最友好的

$('#btn').click(function () {$.ajax({url: 'a.com',success: function (url) {option.open({//type: 1,icon: 3,title: "支付",btn: ['立即查看', '取消'],content: "文件已經校驗成功,請查看結果",btn1: function (index) {option.closeAll();window.open("./page/......");},btn2: function (index) {option.closeAll();}});}}); });

總結

以上是生活随笔為你收集整理的ie9浏览器两个ajax请求同步不兼容_浏览器拦截问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。