需求是这样的,有A,B两个页面,从A跳到B,发起ajax请求,成功后回到A,且阻止用户再回到B.
目前比较中意的解决方案是请求成功后直接新开一个窗口A,把原有窗口毙掉。
但遇到两个问题,如果在回调中执行window.open()会被浏览器拦截,网上的解决办法是在调用ajax请求前新开一个空白窗口,但这个操作也是需要用户点击才可以,如果ajax不是用户点击发起的还是会被拦截。
button.addEventListener('click', function() {
var a = window.open('about:blank');// 写在ajax请求前
setTimeout(() => {
// 如果成功
a.location.href = 'www.baidu.com';
// 如果失败
// a.close();
}, 1000);
})
setTimeout(() => {
// 不是用户自己点击的,还是会被拦截
button.click();
}, 2000);
还有就是关闭当前页也是个问题。
请问有没有更好的方案,急求
其实不需要“打开新窗口,关闭旧窗口”那么麻烦,你的期望不是“让用户没法再回到b”么?这个“没法回到”,我是不是可以这样理解,想阻止用户通过浏览器的“回退”键跳回b页面?
如果是的话,在你的ajax成功后,可以用
location.replace(页面a的地址)
来重定向到a页面,这样点“回退”是回不到页面b的