一.同一网站内
1.监听返回事件
window.addEventListener("popstate", function (e) {
alert("我监听到了浏览器的返回按钮事件啦");//根据⾃⼰的需求实现⾃⼰的功能
}, false);
2.增加⼀个本页URL
虽然我们监听到了后退事件,但是页⾯还是会返回上⼀个页⾯,所以我们需要使⽤pushState增加⼀个本页的url,
function pushHistory() {
var state = {
title: "title",
url: "#"
};
window.history.pushState(state, "title", "#");
}
3.完整代码
闭包
$(function () {
pushHistory();
window.addEventListener("popstate", function (e) {
alert("我监听到了浏览器的返回按钮事件啦");//根据⾃⼰的需求实现⾃⼰的功能
}, false);
function pushHistory() {
var state = {
title: "title",
url: "#"
};
window.history.pushState(state, "title", "#");
}
}
vue
const popStateHandle = function () {
//处理逻辑
}
onMounted(() => {
window.history.pushState(null, null, '')
window.addEventListener('popstate', popStateHandle, false)
})
onUnmounted(() => {
//销毁
window.removeEventListener('popstate', popStateHandle)
})
二.不同网站内
1.需求
网站A-页面a.page 转到网站B -页面b.page 在b.page点击浏览器右上角返回让他监听到并且跳转到B网站的b_c.page
2.问题
popstate事件监听不管用,因为history.state没有数据,直接返回至a.page
3解决方案
1.在B网站加一个空白的页面b_empty.page放入上面的监听代码 2.A网站的a.page跳转到B网站的b_empty.page 3.b_empty.page 自动跳转到b.page 这样在b.page 返回b_empty.page的时候就能监听到了
参考文章
版权归原作者 前端混子 所有, 如有侵权,请联系我们删除。