html5的onhashchange和history历史管理

现在的开发,越来越倾向于页面内跳转,这种情况下需要更新自己的知识,来实现页面内跳转。history就是解决这个问题的。

HTML5有两种解决办法:

1,onhashchange
用到了window.loaction.hash对象(存,取)


2,history

(1) pushstate 三个参数:数据,标题(为空),url(可选)。
(2) popstate是一个事件,读取event.state数据
注意:url是虚假的。用户不能实际找到。


本质上:两种方式都是存值+取值事件。简化后就是:
window.loaction.hash = srcArr;
window.onhashchange=function(){
    var val = window.loaction.hash;
}

history.pushState = srcArr;
window.onpopstate=function(event){
    var val = event.state;
};


详情参考如下参数随机数例子:

Html代码  收藏代码
    1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
    2. <html xmlns="http://www.w3.org/1999/xhtml">  
    3. <head>  
    4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
    5. <title>无标题文档</title>  
    6.   
    7. <script type="text/javascript">  
    8.   
    9. window.onload=function (){  
    10.     var oInput = document.getElementById("input1");  
    11.     oInput.onclick=function(){  
    12.         var oDiv = document.getElementById("div1");  
    13.         var num = generateNum (6);  
    14.   
    15.         //onhashchange  
    16.         window.location.hash = num;  
    17.         window.onhashchange = function(){  
    18.             oDiv.innerHTML = window.location.hash.substring(1);  
    19.         }  
    20.           
    21.   
    22.         //history  
    23.         /*  
    24.         history.pushState(num, '');  
    25.         window.onpopstate = function(event){  
    26.             oDiv.innerHTML=event.state;  
    27.         }*/  
    28.         oDiv.innerHTML=num;  
    29.   
    30.   
    31.         //生成随机数  
    32.         function generateNum (num){  
    33.             var ret = [];  
    34.             for (var i = 0; i num; i++) {  
    35.                 ret.push(Math.ceil(100*Math.random()));  
    36.             };  
    37.             return ret;  
    38.         }  
    39.     }  
    40. }  
    41.   
    42.   
    43. </script>  
    44. </head>  
    45.   
    46. <body>  
    47.     中奖号码:  
    48. <div id="div1"></div>  
    49.   
    50. <input type="button" value="生成随机号码" id="input1" />  
    51. </body>  
    52. </html
原文地址:https://www.cnblogs.com/shsgl/p/4289925.html