浏览器监听左上角返回按钮监听事件popstate 不起作用&使用History.back()页面后退刷新或者处理一些其他操作页面

需求

网站A-页面a.page 转到网站B -页面b.page
在b.page点击浏览器右上角返回让他监听到并且跳转到B网站的b_c.page

做法

在B网站的b.page级啦监听函数

pushHistory();
window.addEventListener("popstate", function(e) {
    alert("监听到返回按钮事件啦");
    //根据自己的需求实现自己的功能
    //window.location.href = b_c.page'
}, false);
function pushHistory() {
var state = {
title: "title",
url: "#"
};
window.history.pushState(state, "title", "#");

问题

监听不起作用

解决方案

1.在B网站加一个空白的页面b_empty.page放入上面的监听代码
2.A网站的a.page跳转到B网站的b_empty.page
3.b_empty.page 自动跳转到b.page
这样在b.page 返回b_empty.page的时候就能监听到了,然后强制跳转到需要的页面

猜测原因
popstate事件监听只能监听到设置监听之后的的路由堆栈
一般只有在通过前面2个方法设置了同一站点的多条历史记录,并在其之间导航(前进或后退)时,才会触发这个事件

补充知识:使用History.back()页面后退刷新或者处理一些其他操作页面

需求:在一个页面操作完返回上一个页面,此时希望上个页面能够处理一些操作
比如 pre为上一个页面,current为当前页面
1.pre需要加监听历史记录点

 window.onpopstate=function(){
    // 获得存储在该历史记录点的json对象
    var  json=window.history.state;// 获得的json为null时,不是下一个页面返回
    if(json){
       //自己的业务操作
    }
}; 

2.跳转current前需要先替换当前历史记录点

var  json={time:new Date().getTime()};
window.history.replaceState(json,"",window.location.href+"&t="+new Date().getTime());
window.location.href= current;

3. current返回pre

history.back();
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值