1、基本信息json
写法:地址 + “#” + 任意字母浏览器
描述:哈希值发生变化的时候会触发历史管理,若没有特殊设置页面内容不变,若有设置当点击按钮时页面内容会变化但页面不跳转服务器
触发历史管理的方法:一、跳转页面 二、hash(哈希值) 三、pushStatedom
历史管理的做用:点击浏览器上面的小箭头可以返回上一个访问的页面函数
JS方法——哈希值改变触发事件:测试
一、哈希改变触发函数写法:spa
window.onhashchange = function(){};
二、获取地址栏的哈希值code
写法:window.location.hashblog
描述:获取到的数值带“#”事件
获取不带#的哈希值:window.location.hash.substring(1)
H5方法——哈希值改变触发事件:
存储写法:history.pushState(数据,标题,地址可选)
获取写法:window.onpopstate = function(){ }
生效条件:在服务器下才能生效,若是在本地测试的话须要打开wamp
不能刷新页面:刷新后页面会不存在,由于是历史管理,不是实际的页面
2、实例
一、js随机选择彩票,点击浏览器返回可查看上一组彩票
window.onload = function(){ var oInput = document.getElementById('input1'); var oDiv = document.getElementById('div1'); var json = {}; oInput.onclick = function(){ var num = Math.random(); var arr = randomNum(35,7); json[num] = arr; oDiv.innerHTML = arr; window.location.hash = num; }; window.onhashchange = function(){ oDiv.innerHTML = json[window.location.hash.substring(1)]; }; function randomNum(iAll,iNow){ var arr = []; var newArr = []; for(var i=1;i<=iAll;i++){ arr.push(i); } for(var i=0;i<iNow;i++){ newArr.push( arr.splice( Math.floor(Math.random()*arr.length) ,1) ); } return newArr; } };
<input type="button" value="随机选择" id="input1"> <div id="div1"></div>
二、h5随机选择彩票,点击浏览器返回可查看上一组彩票
window.onload = function(){ var oInput = document.getElementById('input1'); var oDiv = document.getElementById('div1'); oInput.onclick = function(){ var arr = randomNum(35,7); history.pushState(arr,'',arr); oDiv.innerHTML = arr; }; window.onpopstate = function(ev){ oDiv.innerHTML = ev.state; }; function randomNum(iAll,iNow){ var arr = []; var newArr = []; for(var i=1;i<=iAll;i++){ arr.push(i); } for(var i=0;i<iNow;i++){ newArr.push( arr.splice( Math.floor(Math.random()*arr.length) ,1) ); } return newArr; } };
<input type="button" value="随机选择" id="input1"> <div id="div1"></div>