使用window.open容易被谷歌浏览器拦截,解决

使用的谷歌浏览器,使用window.open(),测试的时候,发现总是被拦截,这这里记录下解决的方法。

当非用户触发的window.open()方法时,由于谷歌的安全机制,通常是会被拦截的,除非人工取消拦截。比如下面两个例子:当用户没有直接发出window.open()请求的时候,不是直接调用,而是在回调函数里调用,则会被拦截。

//不会被拦截
$('#btn').click(function () {
    window.open(url)
});
$('#btn').click(function () {
    $.ajax({
        url: 'a/aa',
        success: function (url) {
            //会被拦截
            window.open(url);
        }
    })
});

解决方案

$('#btn').click(function () {
    //打开一个不被拦截的新窗口
    var newWindow = window.open();
    $.ajax({
        url: 'a/aa',
        success: function (url) {
            //修改新窗口的url
            newWindow.location.href = url;
        }
    })
});

网上找的方法 ,感谢网友
原文链接:
https://blog.csdn.net/hongyua...

你可能感兴趣的