zoukankan      html  css  js  c++  java
  • HTML5 history API 介绍

    HTML5 history API介绍

    history是个全局变量,即window.history


    属性和方法如下:

    length:历史堆栈中的记录数。

    back(): 返回上一页。

    foward(): 前进到下一页。

    go([delta]): delta是数字,如果为0或为空则刷新本页,如果正数则前进[delta]页,如负数则后退[delta]页。


    HTML5添加了以下两个方法:

    pushState(data, title, [,url]):在历史堆栈顶部插入一条记录。

    data为一个对象或null,会在window的popstate事件(window.onpopstate)时,作为state参数传递过去。

    title为页面的标题,当前所有浏览器都忽略这个参数。

    url 为页面url,不写则为当前页。

    replaceState(data, title, [,url]):更改当前页面的历史记录。这种更改不会去访问该URL。
    replaceState()的URL参数必须和当前页的协议(如HTTP、HTTPS)和域名完全相同(使用不同的子域都不行)

    目前只有Safari 5.0+、Chrome 8.0+、Firefox 4.0+和iOS 4.2.1+支持。如果想兼容老浏览器的话,可以试试History.js,而且它还修正了一些bug。

    pushState 与 replaceState 使用:

    <?php
        $photo = isset($_GET['id'])? $_GET['id'] : 1;
    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
     <head>
      <meta http-equiv="content-type" content="text/html; charset=utf-8">
      <title>test</title>
      <script type="text/javascript">
    
      function go(c){
        document.title = 'test' + c; //更改title
        window.history.pushState({'title':'test'+c, 'photo':c}, 'test'+c, 'test.php?id='+c); // 插入前一页历史记录
        window.history.replaceState({'title':'test'+c, 'photo':c},'test'+c, 'test.php?id='+c);  // 更改当前历史记录
        document.getElementById("photo").src = c + '.jpg';
      }
    
      window.onpopstate = function(obj){
        if(obj.state!=null){
            document.title = obj.state.title;  // 后退时更新title
            document.getElementById("photo").src = obj.state.photo + '.jpg';
        }
      }
      </script>
     </head>
    
     <body>
      <p>
          <a href="javascript:void(0)" onclick="go(1)">page 1</a>
          <a href="javascript:void(0)" onclick="go(2)">page 2</a>
          <a href="javascript:void(0)" onclick="go(3)">page 3</a>
          <a href="javascript:void(0)" onclick="go(4)">page 4</a>
      </p>
      <p><img src="<?=$photo ?>.jpg" id="photo"></p>
     </body>
    </html>
    window.onpopstate方法:

    window.onpopstate = function(event){
        alert(event.state);
    }


  • 相关阅读:
    起泡排序引申出的问题
    关于NPC和NP-Hard问题
    我的书单(更新中)
    OpenCV2学习笔记03:Qt中配置OpenCV环境
    Ubuntu 14.04为浏览器添加Flash插件
    CSS3基础
    HTML5进阶
    拖拽上传及读取文件实现
    生产者消费者模型
    进程
  • 原文地址:https://www.cnblogs.com/fdipzone/p/3715118.html
Copyright © 2011-2022 走看看