js脚本弹出新窗口被拦截解决方案

心是我的,里面却装满了你。

在Web编程中,使用JS在新窗口打开页面的时候,会遇到被浏览器拦截的情况,那么,我们如何才能让JS打开新窗口不被浏览器阻止呢?
例子一:
一般情况下,如果直接在js中调用window.open()函数去打开一个新窗口,浏览器会对弹出的窗口进行拦截,因为浏览器会把该窗口认为是弹出广告等用户不想得到的窗体

<a href="javascript:void(0)" onclick="window.open()"></a>

这样用户点击这个超链接,浏览器会认为它是打开一个新的链接,所以就不会拦截。

例子二:
使用ajax处理数据,当点击获取数据后,再跳转到新页面,这时就会被浏览器拦截
先用window.open打开一个窗口,然后修改该窗口地址

var tempwindow = undefined;
$.ajax({
            url: hosts + '/user/profile',
            type: 'get',
            beforeSend: function (xhr) {
                xhr.setRequestHeader("auth-token", authToken);
            },
            success: function(res) {
                if (res.code == 0) {
                    if (payChannel == 11) { // 微信支付
                        getwx(comboId, totalAmount, payChannel)
                    } else { // 支付宝支付
                        if (comboId) {
                            tempwindow = window.open();
                            tempwindow.location.href = `./pcchargebean.html?comboId=${comboId}&payChannel=${payChannel}`;
                        } else if (totalAmount) {
                            tempwindow = window.open();
                            tempwindow.location.href = `./pcchargebean.html?totalAmount=${totalAmount}&payChannel=${payChannel}`;
                        };
                    }
                }
            },
            error: function(res) {
                if (JSON.parse(res.response).code == 402) {
                    mui.toast('请登陆!');
                }
            }
        });

提前将tempwindow 定义为空,注意还不能将此定义为 window.open(),不然会一直打开,这就是我踩的坑 小坑吧,

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值