解决window.open被拦截问题

614 阅读1分钟

敲黑板-在chrome的安全机制里,非用户触发的window.open会被拦截

例如:

let btn = $(".btn");
btn.click(function () {
    // 不会被拦截
    window.open('http://www.baidu.com');
});
$.ajax({
    url: 'xxx',
    success: function(){
        // 这里会被拦截
        window.open('http://www.baidu.com');    
    }
})

这两个结果产生的原因则是,后者不是用户触发,而前者是用户点击之后触发。 所以,解决的办法:

let newPage = window.open();
$.ajax({
    url: 'xxx',
    success: function(){
        // 这里会被拦截
        newPage.location.href = 'http://www.baidu.com';  
    }
})