HTML5 ---> 历史管理
}
var oInput = document.getElementById('input1');
var box = document.getElementById('box');
var obj = {};
oInput.onclick = function(){
var number = randomNum(35,7);
box.innerHTML = number;
var oRD = Math.random();
obj[oRD] = number;
window.location.hash = oRD;
}
window.onhashchange = function(){
var number = obj[window.location.hash.substring(1)] || '';
box.innerHTML = number;
}
例2: //history方法实现
var oInput = document.getElementById('input1');
var box = document.getElementById('box');
var iNow = 1;
oInput.onclick = function(){
var number = randomNum(35,7);
box.innerHTML = number;
history.pushState(number,'',iNow++);
}
window.onpopstate = function(ev){
var number = ev.state || '';
box.innerHTML = number;
}
--针对在一个页面内的历史管理(ajax等)
1. onhashchange : 改变hash值来管理
2. history :
--pushState : 三个参数:数据 标题(都没实现) 地址(可选)
--popstate事件 : 读取数据 event.state
--注意 : 网址是虚假的,需要在服务器指定对应页面,不然刷新找不到页面
注:下面的例子为在一个页面内,每次点击按钮,随机从一个存储了1-35的数组中抽取7个当作div元素的innerHTML。现在,要做历史管理(一个页面内的历史管理),实现代码如下:
例1://onhashchange 方法实现
function randomNum(alls,now){
var arr = [];
var newArr = [];
for(var i=1;i<alls;i++){
arr.push(i);
}
for(var j=0;j<now;j++){
newArr.push(arr.splice(Math.floor(Math.random()*arr.length),1));
}
return newArr;}
var oInput = document.getElementById('input1');
var box = document.getElementById('box');
var obj = {};
oInput.onclick = function(){
var number = randomNum(35,7);
box.innerHTML = number;
var oRD = Math.random();
obj[oRD] = number;
window.location.hash = oRD;
}
window.onhashchange = function(){
var number = obj[window.location.hash.substring(1)] || '';
box.innerHTML = number;
}
例2: //history方法实现
var oInput = document.getElementById('input1');
var box = document.getElementById('box');
var iNow = 1;
oInput.onclick = function(){
var number = randomNum(35,7);
box.innerHTML = number;
history.pushState(number,'',iNow++);
}
window.onpopstate = function(ev){
var number = ev.state || '';
box.innerHTML = number;
}