JS实现点击浏览器自带返回按钮跳转到指定页面

 JS实现点击浏览器自带返回按钮跳转到指定页面.

实例代码一:

//该方法修改地址后,会变成order#
//此时返回是变成order.html
//但是,执行了一次popstate
//我们通过捕捉这个popstate完成手动跳转
 function pushHistory() {
     window.history.pushState({}, "index", "#");
 }
 
//执行代码
pushHistory();
//添加监听事件,监听后退,前进
window.addEventListener("popstate", function (e) {
    window.location.href = "https://shuiniguan.cnccpa.cn/";
}, false);

实例代码二

浏览器返回按钮跳转到指定页面
在使用手机浏览器打开网页时,我们会发现有时候点击浏览器下方的返回按钮,并未返回到首页,而是会跳转到其他页面。
怎么实现呢,下面跟大家简单分享一下:
1、改变浏览器回退的历史记录url地址:
每打开一条地址,浏览器会记录一条历史记录,浏览器回退按钮是读取上一条历史记录的地址并跳转。当只打开一个页面时浏览器返回按钮获取不到上一条历史记录,直接返回首页。(注:这里不考虑部分手机浏览器的无痕浏览设置)
为保证我们打开网页之后,浏览器的历史记录会有多条记录,打开网页时先进行添加历史记录的操作。window的history属性有pushState、replaceState、popstate等方法。通过pushState()方法对浏览器插入历史记录。
history的其他属性方法在此不做介绍,需要用到的道友自己百度哟~~
pushState(state, title, url):pushState()方法有三个参数,state是数据设置(可通过history.state读取),title是标题(多数浏览器会忽略或不识别这个参数,建议设置为null),url是要插入的记录地址。
示例:
 

 

为保证点击返回按钮时获取的上一条记录是自己添加的,这里插入两条记录,同时为保证插入第一条记录完成状态改变之后才插入第二条记录,这里用setTimeout设置一点延迟。

2、监听浏览器返回按钮事件,触发时修改跳转地址:
当用户在浏览器点击进行后退、前进,或者在js中调用histroy.back(),history.go(),history.forward()等,会触发history的popstate()方法,因此我们要对popstate()方法进行监听。
示例:

function内是触发popstate之后要做的操作,这里直接设置跳转至Ranking.html页面。

完整代码:

onload时插入历史记录,然后进行监听。其他插入历史记录的时机未测试。

ps: 俺在测试过程中发现,在电脑上谷歌浏览器仿移动端模式调试时,pushState()方法基本上都是成功,查看history可以在state中看到插入的数据,但是返回按钮并不会出现(灰色无法点击)。而在控制台console输入history.back()会触发popstate,返回按钮会出现。(小菜鸡不知道是啥原因,各位大佬请原谅~~)
转到手机上测试时基本上都是可以的,苹果、vivo、小米手机自带浏览器可以,谷歌、UC、QQ浏览器也可以,其他未测。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值