历史状态管理

var go = document.querySelector( ".go" ),
           back = document.querySelector( ".back" ),
           url=window.location.href;

W.addHandler( go, "click", function () {
       history.go(1);
   } );

W.addHandler( back, "click", function () {
       history.go(-1);
   } );

W.addHandler( window, "hashchange", function () {

W.log( window.location.href );
       //pushState在前端创造假的url和后台真url对应
       history.pushState({name:url.hash},"new page");
       //第一个参数 状态信息 用于初始化页面
       // 第二个参数 新状态的标题(没有浏览器实现 可设为kong)
       //第三个参数 可选的相对url 对应服务器的真实url
   } );

//利用hashchange可以在页面未打开一个全新页面的情况下把改变写入history 使后退前进依然有效

//状态变化时触发 包括前进后退 在这里可以操作页面 载入服务器真实url的内容
   W.addHandler(window,"popstate",function(event){

var state=event.state;
       alert(state.name);
       if(state){ //第一个页面加载时state为空
           //do something
       }
   });

//replaceState不会再历史状态栈,只会重写当前的状态 改变popstate拿到的state
      history.replaceState({name:"replace"},"haha");

window.location.href = url+ "#dsd";

时间: 2024-11-16 16:15:45

历史状态管理的相关文章

HTML5实战与剖析之历史管理(history对象)

HTML5新添加了对历史的管理,更新了history对象让管理历史状态更加方便了.在现代Web应用中,用户可以通过"前进"和"后退"按钮进行历史页面的切换.这让一些不在新页面中打开的新页面前进后退自如,提高了用户体验. 通过haschange事件,可以知道URL的参数什么时候发生了变化,也就是什么时候该有所反应.通过状态管理的API,能够在不加载新页面的情况下改变浏览器的URL.所以需要使用history.pushState()方法.history.pushStat

js-JavaScript高级程序设计学习笔记14

第十六章 HTML5脚本编程 1.跨文档消息传递.简称XDM,指的是来自不同域的页面间传递消息. XDM的核心是postMessage()方法,接收两个参数,一条消息和消息接收方来自哪个域的字符串. 接收到XDM消息时,会触发window对象的message事件,异步触发. 为保险起见,第一个参数传递字符串.在传入结构化的数据时调用JSON.stringify(),然后在onmessage事件处理程序中调用JSON.parse(). 2.原生拖放 1.拖放事件.拖动元素时,将依次触发dragst

16. javacript高级程序设计-HTML5脚本编程

1. HTML5脚本编程 l 跨文档消息传递API能够让我们在不降低同源策略安全性的前提下,在来至不同的域的文档间传递消息 l 原生拖放功能可以方便的指定某个元素是否可以拖动,并在放置时做出响应.还可以创建自定义的可拖放元素及放置目标 l 新的媒体元素<audio>和<video>可以拥有自己的与视频和音频交互的API l 历史状态管理让我们不必卸载当前页面即可以修改浏览器的历史状态栈.

《javascript高级程序设计》笔记(十六)

HTML5脚本编程 (一)跨文档消息传递 postMessage():向包含在当前页面的<iframe>元素,或由当前页面弹出的窗口传递数据. 接收两个参数:一条消息和一个表示消息接收方来自哪个域的字符串. //所有支持XDM的浏览器也支持iframe的contentWindow属性 var iframeWindow = document.getElementById("myframe").contentWindow; iframeWindow.postMessage(&q

javascript 高级程序设计 学习笔记

<!--<script> // 异步请求封装 IE6即以上浏览器 // ajax(url,fnSucc,selectID,fnFaild) //url 请求地址 //fnSucc 异步请求后的内容处理函数 //fnFaild 请求失败处理函数 function ajax(url,fnSucc,fnFaild) { //1.创建Ajax对象 //非IE6 var oAjax; if(window.XMLHttpRequest)//不会报错,只会是undefined {oAjax=new X

《JavaScript高级程序设计》Chapter 15 canvas + Chapter 16 HTML5

Chapter 15 Canvas Chapter 16 HTML5 Chapter 15 Canvas <canvas>元素:设定区域.JS动态在这个区域中绘制图形. 苹果公司引导的.由几组API构成. 2D上下文普及了.WebGL(3D上下文)还未足够普及. 基本用法 首先:width.height属性确定绘图区域大小.后备信息放在开始和结束标签之间. getContext():DOM获得这个canvas元素对象.再在这个对象上调用getContext()获取上下文,传入参数表示获取的是2

js红宝书总结笔记

一.JS的简介: 1.宿主环境:浏览器.node.adobe flash; 2.DOM(文档对象模型)是针对 XML 但经过扩展用于 HTML 的应用程序编程接口(API): DOM0级:即DHTML:    DOM1级:主要映射文档结构: DOM2级:增加视图,样式,事件,遍历和范围: DOM3级:增加验证等方法: 3.BOM(浏览器对象模型) 二.在html中使用js 1.script的属性:defer(html4.01):脚本延迟至页面加载完成后执行:async(html5):不必等待脚本

JavaScript高级程序设计(第3版) 中文pdf扫描版 89M 高清下载

<JavaScript高级程序设计(第3版)>是JavaScript超级畅销书的最新版.ECMAScript5和HTML5在标准之争中双双胜出,使大量专有实现和客户端扩展正式进入规范,同时也为JavaScript增添了很多适应未来发展的新特性. <JavaScript高级程序设计>这一版除增加5章全新内容外,其他章节也有较大幅度的增补和修订,新内容篇幅约占三分之一. 全书从JavaScript语言实现的各个组成部分——语言核心.DOM.BOM.事件模型讲起,深入浅出地探讨了面向对象

(版本定制)第14课:Spark Streaming源码解读之State管理之updateStateByKey和mapWithState解密

本期内容: 1.updateStateByKey解密 2.mapWithState解密 背景:整个Spark Streaming是按照Batch Duractions划分Job的.但是很多时候我们需要算过去的一天甚至一周的数据,这个时候不可避免的要进行状态管理,而Spark Streaming每个Batch Duractions都会产生一个Job,Job里面都是RDD, 所以此时面临的问题就是怎么对状态进行维护?这个时候就需要借助updateStateByKey和mapWithState方法完成