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

  • 相关阅读:
    HERO 3
    office的一些应用,
    网页之间的参数传弟
    一个好的数码网站
    C++遍历中删除std::hash_map元素问题
    【转】Asio与shared_ptr的一些注意事项
    delphi的字节对齐
    paypal的即时付款通知参数列表(PDT)
    vs2010下libevent的使用
    mysql 数据库 left join,right join, inner join 知识
  • 原文地址:https://www.cnblogs.com/iagw/p/6378755.html
Copyright © 2011-2022 走看看