js有关浏览器阻止新开窗口的处理

当用户将浏览器设置为阻止弹窗时,浏览器在程序新开页面或者说新开窗口时,会认为程序有恶意广告或者骚扰信息,就会阻止弹窗弹出,但是提示不明显,很多正常程序新开窗口也会被阻止而用户却不知道。作为开发人员就需要避免这种情况或者放大提示去告诉用户允许浏览器弹窗。比如window.open和form用target='_blank'的方式就容易被阻止,这时我们需要使用onclick方式去触发,这样浏览器就会认为是用户主动要求打开新页面,从而不阻止。但是这种方法在onclick直接执行window.open或submit方法时是有效的,如何在window.open之前进行了异步请求,这时就失效了。就此以下说说自己的做法:

1.在新开页面之前进行异步请求主要是为了得到某个值传给新页面,如果不是必须在父页面进行异步请求,将异步请求所需要的参数传给新页面,让新页面进行异步请求。

2.在异步请求前打开执行window.open,打开一个空白页面,异步请求结束后,将空白页面已window.location.href的方式跳转到目标页面。

3.js判断新开页面是否被浏览器阻止,若阻止,提示用户去打开。var openwin=window.open('...');if(openwin==null){alert('弹窗被阻止');}(此方法貌似只对window.open有效,我还没找到js如何判断form打开新页面是否被阻止的方法)

4.将异步请求改为同步。(亲测有效)

总结:1可以解决问题,但是太局限了;2不推荐,返回页面时需要返回两次;如果是维护项目的话,可能会影响其他页面;3的话如果form表单新开页面是否被阻止能用js判断出来,这个方法也是不错的;4最有效,适用于大部分情况

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值