• 浏览器后退刷新(通过浏览器按钮)


    以前做了一个手机端电商的项目,其中遇到一个问题就是浏览器后退问题,为了保证数据的及时准确,需要一个浏览器后退后之后自动刷新后退到的页面,保证页面数据的准确性。(可能数据已经被下一步修改掉了)。

    需求如下:

    1.html进行一系列操作之后跳转到2.html,当用户通过浏览器回退到1.html的时候,1.html需要自动刷新以便数据准确。

    经过研究,发现可以通过cookie设置一个标志位来实现,具体原理如下:

    1.html:判断标志位是否是false,如果是false不刷新,继续后边的代码,如果是true,那么设置为false后刷新当前页面。

    2.html:设置标志位为true。

    具体代码如下:

    1.html:

    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no,initial-scale=1" />
    
    <title>浏览器后退刷新</title>
    <style type="text/css">
    body {}
    </style>
    </head>
    <body>
    <h1>浏览器后退刷新1.html</h1>
    
    <script>
    function getCookie(c_name){
        if (document.cookie.length>0){  //先查询cookie是否为空,为空就return ""
          c_start=document.cookie.indexOf(c_name + "=");  //通过String对象的indexOf()来检查这个cookie是否存在,不存在就为 -1  
          if (c_start!=-1){ 
            c_start=c_start + c_name.length+1  //最后这个+1其实就是表示"="号啦,这样就获取到了cookie值的开始位置
            c_end=document.cookie.indexOf(";",c_start);  //其实我刚看见indexOf()第二个参数的时候猛然有点晕,后来想起来表示指定的开始索引的位置...这句是为了得到值的结束位置。因为需要考虑是否是最后一项,所以通过";"号是否存在来判断
            if (c_end==-1) c_end=document.cookie.length  
            return unescape(document.cookie.substring(c_start,c_end));  //通过substring()得到了值。想了解unescape()得先知道escape()是做什么的,都是很重要的基础,想了解的可以搜索下,在文章结尾处也会进行讲解cookie编码细节
        } 
      }
      return "";
    }  
    
    function setCookie(c_name,value,expiredays)
    {
    var exdate=new Date()
    exdate.setDate(exdate.getDate()+expiredays)
    document.cookie=c_name+ "=" +escape(value)+
    ((expiredays==null) ? "" : ";expires="+exdate.toGMTString())
    }
    
    
    switch(getCookie("htmlMustReload")) {
    case "":  //如果没有那么建立cookie
      alert("设置cookie");
      setCookie("htmlMustReload",false,99999);
      break;
    case "true":  //如果设置为true,那么设置为false并重载
      alert("重新设置cookie为false,并刷新");
      setCookie("htmlMustReload",false,99999);
      window.reload();
      break;
    default:
        alert("啥也没干");
      break;
    }
    </script>
    <a href="2.html">跳转到2.html</a>
    </body>
    </html>

    2.html

    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no,initial-scale=1" />
    
    <title>浏览器后退刷新2.html</title>
    <style type="text/css">
    body {}
    </style>
    </head>
    <body>
    <h1>浏览器后退刷新2.html,按下浏览器回退按钮会回退到1.html,并刷新1.html</h1>
    
    <script>
    function getCookie(c_name){
        if (document.cookie.length>0){  //先查询cookie是否为空,为空就return ""
          c_start=document.cookie.indexOf(c_name + "=");  //通过String对象的indexOf()来检查这个cookie是否存在,不存在就为 -1  
          if (c_start!=-1){ 
            c_start=c_start + c_name.length+1  //最后这个+1其实就是表示"="号啦,这样就获取到了cookie值的开始位置
            c_end=document.cookie.indexOf(";",c_start);  //其实我刚看见indexOf()第二个参数的时候猛然有点晕,后来想起来表示指定的开始索引的位置...这句是为了得到值的结束位置。因为需要考虑是否是最后一项,所以通过";"号是否存在来判断
            if (c_end==-1) c_end=document.cookie.length  
            return unescape(document.cookie.substring(c_start,c_end));  //通过substring()得到了值。想了解unescape()得先知道escape()是做什么的,都是很重要的基础,想了解的可以搜索下,在文章结尾处也会进行讲解cookie编码细节
        } 
      }
      return "";
    }  
    
    function setCookie(c_name,value,expiredays)
    {
    var exdate=new Date()
    exdate.setDate(exdate.getDate()+expiredays)
    document.cookie=c_name+ "=" +escape(value)+
    ((expiredays==null) ? "" : ";expires="+exdate.toGMTString())
    }
    
    
    switch(getCookie("htmlMustReload")) {
    case "":  //如果没有那么建立cookie并设置为true
      alert("设置cookie");
      setCookie("htmlMustReload",true,99999);
      break;
    case "false":  //如果设置为false,那么设置为true
      alert("重新设置cookie为true,表示回退要刷新");
      setCookie("htmlMustReload",true,99999);
      break;
    default:
      break;
    }
    </script>
    </body>
    </html>

    这样就实现了后退刷新了。

  • 相关阅读:
    python基础12-语法
    基础篇-内置函数(常用)
    中级篇-内置函数 (map/filter/reduce)
    python 基础11-递归
    python 基础10-函数、变量
    python 基础9-拼接
    redis
    python--os模块
    函数return多个值
    python--文件读写
  • 原文地址:https://www.cnblogs.com/jingubang/p/4635503.html
Copyright © 2020-2023  润新知