zoukankan      html  css  js  c++  java
  • html5历史管理

      在网易云课堂上看了妙味课堂的关于html5历史管理的课程,在这里做一下笔记。

      单页面或ajax局部刷新的页面中,没有办法通过前一步和后一步得到历史访问数据,此时有两种方法可以解决这个问题:

      1.onhashchange事件,示例代码:

    <body>
    	<input type="button" value="35选7" id="input1">
    	<div id="div1"></div>
    
    	<script type="text/javascript">
    		var oInput=document.getElementById("input1");
    		var oDiv=document.getElementById("div1");
    		var obj={};
    
    		oInput.onclick=function(){
    			var number=randomNumber(35,7);
    			oDiv.innerHTML=number;
    			var oRd=Math.random();
    			obj[oRd]=number;
    			window.location.hash=oRd;
    		}
    
    		window.onhashchange=function(){
    			var number=obj[window.location.hash.substr(1)]||'';
    			oDiv.innerHTML=number;
    		}
    
    		function randomNumber(alls,now){
    			var arr=[];
    			var newArr=[];
    			for (var i = 1; i <= alls; i++) {
    				arr.push(i);
    			};
    			for (var i = 0; i < now; i++) {
    				newArr.push(arr.splice(Math.floor(Math.random()*arr.length),1))
    			};
    			return newArr;
    		}
    
    	</script>
    </body>
    </html>

      

      2.history下的pushstate和popstate事件,示例代码:  

    <body>
    	<input type="button" value="35选7" id="input1">
    	<div id="div1"></div>
    
    	<script type="text/javascript">
    		var oInput=document.getElementById("input1");
    		var oDiv=document.getElementById("div1");
    
    		oInput.onclick=function(){
    			var number=randomNumber(35,7);
    			oDiv.innerHTML=number;
    			history.pushState(number,'');
    		}
    
    		window.onpopstate=function(ev){
    			console.log(1);
    			var number=ev.state||'';
    			oDiv.innerHTML=number;
    		}
    
    		function randomNumber(alls,now){
    			var arr=[];
    			var newArr=[];
    			for (var i = 1; i <= alls; i++) {
    				arr.push(i);
    			};
    			for (var i = 0; i < now; i++) {
    				newArr.push(arr.splice(Math.floor(Math.random()*arr.length),1))
    			};
    			return newArr;
    		}
    
    	</script>
    </body>
    </html>
    

      几点说明:

      1.hash就是url中#和它后面的内容

      2.必须把hashchange事件处理程序添加给window对象,然后url参数列表只要变化就会调用它。

      3.pushstate方法接收三个参数:数据,标题(都没实现,实际开发中一般为‘’),地址(可选)

      4.popstate事件读取数据用event.state

  • 相关阅读:
    linux学习第一周笔记
    三授权六禁令(必背)
    内存复用三种技术
    移动平台路径相关
    unitUnity优化技巧
    游戏开发优化建议
    转载, unity 如何自定义脚本
    unity animation 在播放动画时报错 The animation state Eat could not be played because it couldn't be found!
    unity 学习之前需要做的准备
    xml 操作遇到的坑
  • 原文地址:https://www.cnblogs.com/iagw/p/6378755.html
Copyright © 2011-2022 走看看