浏览器按返回键回到指定页面

在做一个网页的项目,有个功能的需求是“不要让返回键能回到上一页,而是直接回到主页”。

实现原理: 
利用HTML5 的window.history对象实现对历史记录的访问

实现代码:

一,在需求页面之前的页面修改历史记录

<!--前提1
//假设我们在index.html页面
//------进入到order.html进行表单提交
//自动执行下面下列代码

//index页面是我们要跳转的页面-->
function pushHistory() {
   window.history.pushState({}, "index", "index.html");
}

pushHistory();

<!--影响2
当前url本应该是order.html,但是因为上述代码改变为index.html-->

<!--过程3
我来到了一个表单显示的页面
orderRead.html
此时回退会回到前一页面,但是前一页面的URL被修改为index.html
所以,我们跳转到了index.html
也就是我们需要跳转的页面
-->

<!--思路
1.实现我们大概可以知道pushState函数的作用是修改当前页面的地址,但是不刷新当前页面或者跳转到其他页面
2.因为当前页面的地址被改变了,我们今天到后面的页面时,当前页面的地址所以我们通过返回键的时候,返回的事index页面
-->

二,在需求页的页面修改历史记录

这个方法与之前的方法不同的地方是就在当前页面写代码

//该方法修改地址后,会变成order#
//此时返回是变成order.html
//但是,执行了一次popstate
//我们通过捕捉这个popstate完成手动跳转
 function pushHistory() {
       window.history.pushState({}, "index", "#");
                        }

//执行代码
pushHistory();
//添加监听事件,监听后退,前进
window.addEventListener("popstate", function (e) {
      window.location.href = "index.html";
}, false);

三.pushState介绍

  HTML5引进了history.pushState()方法和history.replaceState()方法,它们允许你逐条地添加和修改历史记录条目。

  这些方法可以协同window.onpopstate事件一起工作。

方法:修改网站路径并创建新的历史记录

 history.pushState(state, "title", "url");
参数 作用
状态对象(state object) 一个JavaScript对象,与用pushState()方法创建的新历史记录条目关联。无论何时用户导航到新创建的状态,popstate事件都会被触发,并且事件对象的state属性都包含历史记录条目的状态对象的拷贝。任何可序列化的对象都可以被当做状态对象。
标题(title) FireFox浏览器目前会忽略该参数,但是我们不能保证以后是否会被用到。
地址(URL) 新的历史记录条目的地址。浏览器不会在调用pushState()方法后加载该地址,可以理解为当前地址被更改,不指定的话则为文档当前URL

1.参数URL必须和当前URL同源 
2.修改网站路径但不操作

四.popstate事件

  调用history.back()、history.forward()、history.go()等方法,会触发popstate事件,单纯调用pushState()或replaceState()不触发popstate事件。 
   
  访问事件的state属性可获取当初pushState()或replaceState()设置的状态数据。

  • history.back()和history.forward() : 分别表示向后一页和向前一页。
  • history.go(num) : 表示向前或向后翻多少页,num为正数表示向前翻,为负数则向后翻。
  • History.back() : 等价于history.go(-1),history.forward()等价于history.go(1)。

五.总结

对于这些也是在项目需求的时候上网找的资料,本身没有很深入的研究,只是将其实现,在代码上可能存在一定的缺陷。

来源于:https://blog.csdn.net/u010433704/article/details/82661289

参考: 
https://www.jb51.net/article/82673.htm#

原文地址:https://www.cnblogs.com/caitangbutian/p/11734302.html

时间: 2024-08-02 00:22:16

浏览器按返回键回到指定页面的相关文章

android webview点击返回键回到上一个html

android webview点击返回键返回上一个html 1 @Override 2 public boolean onKeyDown(int keyCode, KeyEvent event) { 3 if (keyCode == KeyEvent.KEYCODE_BACK && mWebView.canGoBack()) { 4 mWebView.goBack();// 返回前一个页面 5 return true; 6 } 7 return super.onKeyDown(keyCod

网站退出登录防止通过返回按钮回到历史页面

一般做网站的时候,都是通过点击注销之后返回登录页面, 虽然此时session设置为过期,但是用户还是可以通过点击 浏览器的返回按键返回到刚才操作的页面,虽然用户再次 刷新之后依然会进入登录页面,但是个人感觉用户的体验效果 还时不好.所以在网上找了很久,终于发现一些方法可以用, 在此记录下,如果哪位有更好的方法,望告知.谢谢! 在退出的页面增加如下的代码,即可: <script type="text/javascript"> window.onload = function(

非返回键方式实现页面的返回功能

本文参考自:1.msdn这篇文章 2.8.1参考自这里(虽然是写的7.x,但是的确是参考自这里) 背景:webview和原生页面进行交互,没法直接调用返回键(因为微软的返回键里面带有参数,无法通过界面元素,捕捉到那个参数.如果采用导航到新页面的方式,则原来的webview界面信息全无). 1.winphone8.0: 方法①:把RootFrame的static去掉 public PhoneApplicationFrame RootFrame { get; private set; } 在想返回的

监听微信物理返回键,并返回指定页面

我们要了解浏览器的history.大家知道在页面中我们可以使用JavaScript window history,后退到前面页面,但是由于安全原因javascript不允许修改 history里已有的url链接,但可以使用pushState方法往history里增加url链接,并且提供popstate事件监测从history栈里弹出url.既然有提供popstate事件 监测,那么我们就可以进行监听. 返回.后退.上一页按钮点击监听实现代码: window.addEventListener("p

历史返回,若无页面则跳转到指定页面

开头总要有点废话 这个功能在原先的js分享中 有简单的带过,这里拎出来 详细的讲解下原理和存在的问题(由于是运用html5的新API 所以有兼容问题,推荐移动端使用该方法). 功能描述: 在浏览器中新建标签页并指定一个网址,网页加载完毕后,正常流程下是不允许点击返回的.因为当前标签页的相关历史记录是没有的,所以没有记录可以返回. 应客户要求,需要在这种情况下,给他的历史记录里添加一个链接(比如首页),这样在新打开的页面,点击返回就可以跳转到首页,让用户看到系统的各种功能,推广平台. 知识要点 H

监听浏览器返回键、后退、上一页事件(popstate)操作返回键

在WebApp或浏览器中,会有点击返回.后退.上一页等按钮实现自己的关闭页面.调整到指定页面.确认离开页面或执行一些其它操作的需求.可以使用 popstate 事件进行监听返回.后退.上一页操作. 一.简单介绍 history 中的操作 1.window.history.back(),后退 2.window.history.forward(),前进 3.window.history.go(num),前进或后退指定数量历史记录 4.window.history.pushState(state, t

在PHP中如何实现在做了么个操作后返回到指定页面

我们经常会碰到类似用户在没有登录的情况下进行提问.评论,需要用户登录后返回刚才浏览的网页,这种功能用cookie保存当前url地址来实现.我用的是jquery,读者需要懂点jquery中的ajax请求.这个场景的cookie名我用'__forward__',读者可以用自己需要的标识符. 1. 不下载cookie.js.用post请求将当前网页的ulr地址传到后台,让后台用cookie保存url地址:在完成类似登录的页面的功能后,从cookie中取出来,用于页面跳转. 1.1  html页面 //

366API可以实现微信跳转浏览器打开指定页面的功能

源码使用场景:1.用来实现微信自动跳转外部浏览器下载app2.用来实现微信内打开网页链接自动跳转浏览器访问指定页面3.防止网页链接由于被微信拦截,导致用户无法正常在微信内打开 源码说明: 适用安卓和苹果系统,支持任何网页链接.并且无论链接是否已经被微信拦截,均可实现微信内自动跳转浏览器打开. 生成的跳转链接具有极佳的防拦截效果. 源码体验: 1.复制分享链接(app下载页链接或网页链接),然后在浏览器(电脑和手机上都可以)中打开我们需要用到的366API 工具:http://www.366API

HTML5 监听移动端浏览器返回键兼容版本

// 往windosw对象中的历史记录注入URL的方法 function addUrl() { var state = { title: "title", url: "#" }; window.history.pushState(state, "title", "#"); } addUrl(); // 每调用一次可以监听返回一次 addUrl(); // 每调用一次可以监听返回一次 addUrl(); // 每调用一次可以监听