html5的onhashchange和history历史管理

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. <script type="text/javascript">
    7. window.onload=function (){
    8. var oInput = document.getElementById("input1");
    9. oInput.onclick=function(){
    10. var oDiv = document.getElementById("div1");
    11. var num = generateNum (6);
    12. //onhashchange
    13. window.location.hash = num;
    14. window.onhashchange = function(){
    15. oDiv.innerHTML = window.location.hash.substring(1);
    16. }
    17. //history
    18. /*
    19. history.pushState(num, ‘‘);
    20. window.onpopstate = function(event){
    21. oDiv.innerHTML=event.state;
    22. }*/
    23. oDiv.innerHTML=num;
    24. //生成随机数
    25. function generateNum (num){
    26. var ret = [];
    27. for (var i = 0; i < num; i++) {
    28. ret.push(Math.ceil(100*Math.random()));
    29. };
    30. return ret;
    31. }
    32. }
    33. }
    34. </script>
    35. </head>
    36. <body>
    37. 中奖号码:
    38. <div id="div1"></div>
    39. <input type="button" value="生成随机号码" id="input1" />
    40. </body>
    41. </html>
时间: 2024-12-11 04:51:16

html5的onhashchange和history历史管理的相关文章

HTML5实战与剖析之历史管理(history对象)

HTML5新添加了对历史的管理,更新了history对象让管理历史状态更加方便了.在现代Web应用中,用户可以通过"前进"和"后退"按钮进行历史页面的切换.这让一些不在新页面中打开的新页面前进后退自如,提高了用户体验. 通过haschange事件,可以知道URL的参数什么时候发生了变化,也就是什么时候该有所反应.通过状态管理的API,能够在不加载新页面的情况下改变浏览器的URL.所以需要使用history.pushState()方法.history.pushStat

html5 - history 历史管理

参考文章: w3c     :  http://www.w3.org/html/ig/zh/wiki/HTML5/history 张鑫旭  : http://www.zhangxinxu.com/wordpress/2013/06/html5-history-api-pushstate-replacestate-ajax/ zawa   :  http://zawa.iteye.com/blog/1271031 Demo : Demo 截图: 代码: <!DOCTYPE html PUBLIC

html5 历史管理

1.onhashchange:改变hash值来进行历史管理. 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 </head> 7 <body> 8 <input type="button" value="随机选择" id="

HTML5自学笔记[ 8 ]历史管理

触发历史管理的三种方法: 跳转页面 改变hash值 pushState(在服务器环境下运行) 用hash值来触发历史管理: 1 <!doctype html> 2 <html lang="en"> 3 <head> 4 <title>随机产生彩票号码</title> 5 <meta charset="utf-8"/> 6 <script> 7 window.onload = func

历史管理

历史管理 •onhashchange  :改变hash值来管理 window.location.hash=''; window.onhashchange=function(){} •history  : –服务器下运行 –pushState :  三个参数 :数据  标题(都没实现)  地址(可选) –popstate事件 :  读取数据   event.state –注意:网址是虚假的,需在服务器指定对应页面,不然刷新找不到页面

Linux中history历史命令使用方法详解

在/etc/profile里添加如下: #History export HISTTIMEFORMAT="[%F %T]" HISTDIR=/home/common/.hist if [ ! -d $HISTDIR ]; then         mkdir -p $HISTDIR         chmod 777 $HISTDIR fi export HISTSIZE=100000 export HISTFILE="$HISTDIR/${LOGNAME}.hist"

【转】Linux中history历史命令使用方法详解

原文网址:http://os.51cto.com/art/201205/335040.htm 当你在玩Linux的时候,如果你经常使用命令行来控制你的Linux系统,那么有效地使用命令历史机制将会使效率获得极大提升.事实上,一旦你掌握了我在下面给出的15个有关Linux history历史命令的例子,你就会发现使用history历史命令行将更有乐趣. 1.使用HISTTIMEFORMAT在历史中显示TIMESTAMP 通常情况下,当你在命令行中键入history时,终端中将显示你刚输入的命令及其

history历史命令

1.history命令 history命令可以查看历史命令 2.history的用法 语法: history [选项] 选项: -c:清除内存中history的历史命令.不如写入history文件 -a:把内存中的history历史命令更新到history文件中去 -r:把文件中的history历史命令加载到内存中,用于-c之后想重新加载. 3.history的历史命令保存文件 history默认保存1000条历史命令.历史命令保存在家目录下的 .bash_history . 1000条历史命令

历史管理-onhashchange&amp;window.history

网页记录历史记录两种方法 1.onhashchange事件  改变hash值来管理 hash值:http://test.con#hash #后面内容即为hash值 设置网页的hash值  window.location.hash = "要设置的hash值" 获取hash值:var hash = window.location.hash.substring(1);//去掉#号 直接修改网址的hash值,不刷新页面,是不会显示hash指定的模块,此时需要用到onhashchange事件 修