历史管理(哈希值)

一、基本信息

写法:地址 + “#” + 任意字母

描述:哈希值发生变化的时候会触发历史管理,若没有特殊设置页面内容不变,如有设置当点击按钮时页面内容会变化但页面不跳转

触发历史管理的方法:1、跳转页面   2、hash(哈希值)  3、pushState

历史管理的作用:点击浏览器上面的小箭头能够返回上一个访问的页面

JS方法——哈希值改变触发事件:

1、哈希改变触发函数写法:

window.onhashchange = function(){};

2、获取地址栏的哈希值

写法:window.location.hash

描述:获取到的数值带“#”

获取不带#的哈希值:window.location.hash.substring(1)

 H5方法——哈希值改变触发事件:

存储写法:history.pushState(数据,标题,地址可选)

获取写法:window.onpopstate = function(){ }

生效条件:在服务器下才能生效,如果在本地测试的话需要打开wamp

不能刷新页面:刷新后页面会不存在,因为是历史管理,不是实际的页面

 

二、实例

1、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>

 2、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>

 

posted @ 2017-08-30 16:20  念念念不忘  阅读(248)  评论(0编辑  收藏  举报