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

本文介绍了浏览器阻止window.open的原因及解决方法。通过提前创建一个空的弹窗并占位,之后再更新其内容,可以绕过浏览器的安全限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先分析一下浏览器为什么会阻止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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值