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

解决方法:先在回调函数之前打开新窗口,后再加载url

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

欢迎指导!

千而の大狮子!

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值