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

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

最開始覺得是window.open()的瀏覽器兼容性問題,因此嘗試了a標籤點擊,form表單提交,以及window.open()添加「_blank」參數的方式都不行。json

後來考慮到多是ajax請求回調的問題。最後,百度告訴我了一個解決辦法,以下。瀏覽器

 

解決方法:異步

一、異步改成同步,即:async:falseasync

二、將新開窗口指向爲一個對象,而後修改對象的 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;
        }
    });
}); 
相關文章
相關標籤/搜索