浏览器阻止window.open的解决方案

先分析一下浏览器为什么会阻止window.open吧:
用户主动去触发事件的浏览器不会阻止,什么是用户主动触发的呢?就是当用户去点击的一瞬间就弹出这种浏览器是不会阻止的,如果是通过setTimeout定时器延时弹出或者ajax异步处理回调后在open这种浏览器就会认为是恶意弹出就会立刻阻止。

解决办法:
利用之前的重大发现应该这样处理这类问题,当用户点击的时候如果需要在异步ajax回调后open的话应该把代码改成下面这种

function test(){
    $.ajax({
        url:'a.html',
        success: function(e){
            window.open(url)//被浏览器KO了
        }    
    })
}
function test(){
    var winpop=window.open('','pop');
    winpop.document.write('先占个座,去去就来!')
    $.ajax({
        url:'a.html',
        success: function(url){
            window.open(url,'pop')//成功弹出!
        }    
    })
}
原文地址:https://www.cnblogs.com/hupan508/p/5337972.html