• 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

  • 相关阅读:
    第01组 Alpha冲刺(2/6)
    第01组 Alpha冲刺(1/6)
    第08组 Alpha冲刺(6/6)
    2019 SDN上机第4次作业
    第08组 Alpha冲刺(5/6)
    2019 SDN阅读作业
    2019 SDN上机第3次作业
    第08组 Alpha冲刺(4/6)
    第08组 Alpha冲刺(3/6)
    第08组 Alpha冲刺(2/6)
  • 原文地址:https://www.cnblogs.com/iagw/p/6378755.html
Copyright © 2020-2023  润新知