ajax 請求成功之后window.open()被瀏覽器攔截彈窗的處理方法


之前一直使用window.open(url),打開新的切換卡加載頁面,今天使用opera瀏覽器測試的時候發現有這么個情況。

最開始以為是window.open()的瀏覽器兼容性問題,所以嘗試了a標簽點擊,form表單提交,以及window.open()添加“_blank”參數的方式都不行。

后來考慮到可能是ajax請求回調的問題。最后,百度告訴我了一個解決辦法,如下。

 

解決方法:

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;
        }
    });
}); 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM