1. jQuery(document).ready(function () {
  2. if (window.history && window.history.pushState) {
  3. $(window).on('popstate', function () {
                    /// 当点击浏览器的 后退和前进按钮 时才会被触发,
  4. window.history.pushState('forward', null, '');
  5. window.history.forward(1);//当前页 ,
  6. });
  7. }
              //在ie中必须有这两行
  8. window.history.pushState('forward', null, '');
  9. window.history.forward(1);
  10. });

这段代码主要使用js的window.history  对象;介绍一下history的几个比较重要的方法:

1、window.history.forward();   //加载下一个页面(浏览过的) ,和浏览器上的 前进按钮 效果相同

2、window.history.back();    //回到上一个页面 , 和浏览器上的 后退按钮效果相同

ps: 如果浏览的网页有缓存, 当点击浏览器上的 前进和后退 按钮时, 是优先加载浏览器的缓存数据,(重要一点是:不走服务器端代码,如果在服务器端代码加断点,是不过断点的, 这也是缓存的一个弊端,有时候容易导致表单中的数据错乱掉,不能及时更新,)

3、history.go(0);    //刷新当前页面 和浏览器上的 刷新 按钮效果相同

history.go(-1): 效果和history.back() 效果相同

history.go(1) : 效果和history.forward() 效果相同

PS:  js history对象示例代码

4、window.history.pushState(状态码, 标题 , url)   /// 添加并激活一个历史记录条目, 向history 添加当前页面的历史记录,并修改当前页面的url。

举个例子:

假如当前页面的url是:http://localhost:28713/SBNext/index.aspx

执行:window.history.pushState('forward', null, 'badu.aspx');

结果: 在浏览器历史记录中添加一条记录http://localhost:28713/SBNext/index.aspx。当前页面的url变成http://localhost:28713/SBNext/badu.aspx ,但是不会刷新页面,也不会检查url是否正确。  这时如果点击 浏览器的back按钮会回退到http://localhost:28713/SBNext/index.aspx页面, 还是当前页面。 所以这就是上面禁用back按钮 的原理。

5、History.replaceStatet();   参数和pushState()函数一样, 作用替换当前的url。

6、每当激活的历史记录发生变化时,都会触发popstate事件 , 点击浏览器的back 和 next 按钮会触发popstate事件 , 点击刷新按钮不会。

所以可以使用 popstate 事件监听 back 和next 按钮是否被点击。

转自 : https://www.cnblogs.com/generalLi/p/5887259.html

补充:

当点击浏览器后退时 发出警告:

  1. jQuery(document).ready(function ($) {
  2. if (window.history && window.history.pushState) {
  3. $(window).on('popstate', function () {
  4. var hashLocation = location.hash;
  5. var hashSplit = hashLocation.split("#!/");
  6. var hashName = hashSplit[1];
  7. if (hashName !== '') {
  8. var hash = window.location.hash;
  9. if (hash === '') {
  10. alert("Back button isn't supported. You are leaving this application on next clicking the back button");
  11. }
  12. }
  13. });
  14. window.history.pushState('forward', null, './#forward');
  15. }
  16. });

参考:https://stackoverflow.com/questions/6359327/detect-back-button-click-in-browser

Jquery 监听浏览器前进后退的更多相关文章

  1. 用jQuery监听浏览器窗口的变化

    $(window).resize(function () { //当浏览器大小变化时 alert($(window).height()); //浏览器时下窗口可视区域高度 alert($(docume ...

  2. javascript监听浏览器前进后退

    window.addEventListener("popstate", function () { backStatus=true; return; })

  3. 监听用户的后退键,解决部分浏览器回退的bug

    监听用户的后退键,解决部分浏览器回退的bug $(document).keydown(function (event) { // 监听backspace键 if (event.keyCode == 8 ...

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

    在WebApp或浏览器中,会有点击返回.后退.上一页等按钮实现自己的关闭页面.调整到指定页面.确认离开页面或执行一些其它操作的需求.可以使用 popstate 事件进行监听返回.后退.上一页操作. 一 ...

  5. jquery 监听所有锚点链接实现平滑移动

    jquery 监听所有锚点链接实现平滑移动,地址栏上不会改变链接地址 //监听所有锚点链接实现平滑移动 $('a[href*=#],area[href*=#]').click(function() { ...

  6. 监听浏览器返回,pushState,popstate 事件,window.history对象

    在WebApp或浏览器中,会有点击返回.后退.上一页等按钮实现自己的关闭页面.调整到指定页面.确认离开页面或执行一些其它操作的需求.可以使用 popstate 事件进行监听返回.后退.上一页操作. 一 ...

  7. JS实时监听浏览器宽度的变化

    boot:function(){ //加载页面时执行一次 changeMargin(); //监听浏览器宽度的改变 window.onresize = function(){ changeMargin ...

  8. jQuery监听事件经典例子

    关键字:jQuery监听事件经典例子  js代码:  ============================================================  $(function( ...

  9. js监听浏览器tab窗口切换

    js监听浏览器tab窗口切换 ——IT唐伯虎 摘要:js监听浏览器tab窗口切换. if (document.hidden !== undefined) {  document.addEventLis ...

随机推荐

  1. int argc,char *argv[]

    main()函数是操作系统调用的,argc表示传入参数的个数,argv[]表示传入的参数. argv[0]表示exe文件所在的路径,所以argc默认为1. main函数的参数是可以通过dos窗口传入, ...

  2. nginx Linux 开启自启

    编辑  /etc/init.d/nginx  添加一下内容   根据路劲修改. 添加可执行权限  chmod +x /etc/init.d/nginx 开启自启  chkconfig nginx on ...

  3. Jira简单使用操作指引20150605

    1.选择项目 2.点击[问题]——>[所有问题] 3.选择状态(一般开发关注[新增.处理中],测试关注[已解决.已作废]) 4.选择[more],勾选[解决版本].[影响版本].[解决人],我们 ...

  4. IOS开发使用GCD后台运行

    什么是GCD Grand Central Dispatch (GCD)是Apple开发的一个多核编程的解决方法.该方法在Mac OS X 10.6雪豹中首次推出,并随后被引入到了iOS4.0中.GCD ...

  5. Java从入门到精通全套教程免费分享

    这是我自己早前听课时整理的Java全套知识,适用于初学者,也可以适用于中级进阶的人,你们可以下载,我认为是比较系统全面的,可以抵得上市场上90%的学习资料.讨厌那些随便乱写的资料还有拿出来卖钱的人!在 ...

  6. 一名十年Java程序员回忆阿里面试经历——揭开阿里面试的“遮羞布”

    阿里面试经历 去阿里面试可以说非常非常的偶然和戏剧性,因为本人根本没投简历,以至于阿里hr给我电话的时候我一度认为是诈骗电话.因为深圳这家公司不错我还想在这里干个两年左右再考虑考虑. 这个时候的本人已 ...

  7. 【剑指offer】之字形打印二叉树,C++实现

    原创文章,转载请注明出处! 本题牛客网地址 博客文章索引地址 博客文章中代码的github地址 1.题目 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打 ...

  8. xgboost系列之应用xgboost的注意事项

    问题:win和mac平台运行相同的xgboost代码,效果不同? 解决:xgboost的参数colsample_bytree设置为1.

  9. 新手向——关于Python3.5在Windows 10 系统下发布模块的终极讲解

    博主自己在发布Python模块的时候也是摸索了好久啊,因为跟着书上写的步骤一步一步来终究会跪的节奏有木有啊!!!几经波折终于搞出来了,贴下来与诸君共勉.之前的步骤相信大家都已经知道了,那我们就直接跳过 ...

  10. 网站部署,网站要求需要支持mb_substring

    如果没有这个函数,php可能会出现中文乱码,处理方法如下: # yum install php-mbstring   //安装 之后在/etc/php.ini中添加extension=mbstring ...