• Html5 监听拦截Android返回键方法详解


    浏览器窗口有一个history对象,用来保存浏览历史。

    如果当前窗口先后访问了三个网址,那么history对象就包括三项,history.length属性等于3。

    history对象提供了一系列方法,允许在浏览历史之间移动:

    window.history.back():移动到上一个访问页面,等同于浏览器的后退键。

    window.history.forward():移动到下一个访问页面,等同于浏览器的前进键。

    window.history.go(num):接受一个整数作为参数,移动到该整数指定的页面,比如go(1)相当于forward(),go(-1)相当于back()。

    window.history.pushState():HTML5为history对象添加了两个新方法,window.history.pushState()和window.history.replaceState(),用来在浏览历史中添加和修改记录。

    注:1.如果移动的位置超出了访问历史的边界,以上三个方法并不报错,而是默默的失败。

      2.设置时,页面通常是从浏览器缓存之中加载,而不是重新要求服务器发送新的网页。

    重点讲解下:window.history.pushState()

    window.history.pushState(state, title, utl),在页面中创建一个 history 实体。直接添加到历史记录中。

     其中参数:

    state:一个与指定网址相关的状态对象,popstate事件触发时,该对象会传入回调函数。如果不需要这个对象,此处可以填null。

    title:新页面的标题,但是所有浏览器目前都忽略这个值,因此这里可以填null。

    url:新的网址,必须与当前页面处在同一个域。浏览器的地址栏将显示这个网址。

    注:pushState方法不会触发页面刷新,只是导致history对象发生变化,地址栏会有反应。

    举例实现:

    Html5 监听拦截Android返回键方法如下:

    1.监听 popstate 事件

    window.addEventListener("popstate", function(){
        //doSomething
    }, false)

    2.取消默认的返回操作,即监听拦截返回键:添加一条空的 history 实体作为替代原来的 history 实体

     window.history.pushState(null, null, "#");

    举例:

    <!DOCTYPE html>
    <html>
      <meta name="viewport" content="width=device-width">
      <script type="text/javascript">
         var count = 0 ;
         window.history.pushState(null, null, "#");
         window.addEventListener("popstate", function(e) {
            window.history.pushState(null, null, "#");
            document.getElementById('logView').innerHTML = "用户点击返回" + (++count)
         })
      </script>
    <body>
      <p id="logView">test</p>
    </body>
    </html>

    参考:https://my.oschina.net/xtdhwl/blog/1068692

  • 相关阅读:
    OPENDS 5.0 OPEN SOURCE DRIVING SIMULATION
    求推荐计算机图形学,渲染,shader方面的入门书籍
    交通流仿真|万字综述
    Hbase数据备份导入导出
    hadoop用法之mapreduce的应用场景
    mapreduce
    google论文四 Bigtable:结构化数据的分布式存储系统(上)
    经典SQL语句大全
    socket编程之登峰造极完成端口
    BCGControlBar的使用
  • 原文地址:https://www.cnblogs.com/wenzheshen/p/8822091.html
Copyright © 2020-2023  润新知