心是我的,里面却装满了你。
在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()
,不然会一直打开,这就是我踩的坑 小坑吧,