当前位置: 首页 > news >正文

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="btn" />
 9         <div id="div1"></div>
10     </body>
11 </html>
12 <script>
13     window.onload = function(){
14         var oBtn = document.getElementById("btn");
15         var oDiv = document.getElementById("div1");
16         window.json = {};
17         oBtn.onclick = function(){
18             var key = Math.random();
19             var value = randomNum(35,7);
20             json[key] = value;
21             //oDiv.innerHTML = value;
22             window.location.hash = key;
23         }
24         
25         window.onhashchange = function(){
26             var hashValue = window.location.hash.substring(1);
27             if(!hashValue)return;
28             oDiv.innerHTML = json[hashValue];
29         }
30     }
31     
32     function randomNum(totlaNum,resultNum){
33         var totalArray = new Array();
34         var resultArray = new Array();
35         for(var i = 0 ;i < totlaNum;i++){
36             totalArray.push(i);
37         }
38         
39         for(var i = 1; i<= resultNum;i++){
40             resultArray.push(totalArray.splice(Math.floor(Math.random()*totalArray.length),1));
41         }
42         return resultArray;
43     }
44 </script>

 2、history+pushState+ popstate事件:需要在服务器下运行。网址是虚假的,需要服务器指定对应页面,否则刷新找不到页面。

 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="btn" />
 9         <div id="div1"></div>
10     </body>
11 </html>
12 <script type="text/javascript">
13     window.onload = function(){
14         var oBtn = document.getElementById("btn");
15         var oDiv = document.getElementById("div1");
16         window.json = {};
17         oBtn.onclick = function(){
18             var value = randomNum(35,7);
19             //pushState接收三个参数 :数据  标题(都没实现)  地址(可选)
20             window.history.pushState(value,"");
21             oDiv.innerHTML = value;
22         }
23         
24         window.onpopstate = function(ev){
25             oDiv.innerHTML = ev.state;
26         }
27         
28     }
29     
30     function randomNum(totlaNum,resultNum){
31         var totalArray = new Array();
32         var resultArray = new Array();
33         for(var i = 0 ;i < totlaNum;i++){
34             totalArray.push(i);
35         }
36         
37         for(var i = 1; i<= resultNum;i++){
38             resultArray.push(totalArray.splice(Math.floor(Math.random()*totalArray.length),1));
39         }
40         return resultArray;
41     }
42 </script>

 

转载于:https://www.cnblogs.com/tengri/p/5559578.html

相关文章:

  • fopen()函数以a+方式打开一个不存在的文件后读写出现问题
  • 第五章
  • Android Studio自定义注释模板
  • 觉得很有用存一份
  • Grails用CONSOLE测试,比写集成测试还快
  • 186.Reverse Words in a String II
  • 用C#代码来安装、卸载、启动、关闭服务
  • 《java入门第一季》之TreeSet存储自定义对象并保证排序和唯一
  • 创建模仿存储库 Making a Mock Repository 精通ASP-NET-MVC-5-弗瑞曼 Listing 7-5
  • 《训练指南》——6.7
  • BadgeValueView
  • 64位win7下安装SQL Server 2008(图文解说版)
  • CSS3——让最后一行显示省略号
  • “前.NET Core时代”如何实现跨平台代码重用 ——程序集重用
  • 依赖注入框架:autofac
  • Angularjs之国际化
  • conda常用的命令
  • JavaScript实现分页效果
  • SQLServer之创建显式事务
  • 包装类对象
  • 闭包--闭包之tab栏切换(四)
  • 从零搭建Koa2 Server
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 移动端 h5开发相关内容总结(三)
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • Prometheus VS InfluxDB
  • 函数计算新功能-----支持C#函数
  • 我们雇佣了一只大猴子...
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • #1014 : Trie树
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • #pragma once
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • (9)STL算法之逆转旋转
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (C#)获取字符编码的类
  • (js)循环条件满足时终止循环
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (附源码)ssm码农论坛 毕业设计 231126
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (转)Oracle 9i 数据库设计指引全集(1)
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .NET MVC 验证码
  • .NET成年了,然后呢?
  • .NET项目中存在多个web.config文件时的加载顺序
  • @reference注解_Dubbo配置参考手册之dubbo:reference
  • @四年级家长,这条香港优才计划+华侨生联考捷径,一定要看!
  • [ 2222 ]http://e.eqxiu.com/s/wJMf15Ku
  • [ vulhub漏洞复现篇 ] ECShop 2.x / 3.x SQL注入/远程执行代码漏洞 xianzhi-2017-02-82239600
  • [120_移动开发Android]008_android开发之Pull操作xml文件
  • [AutoSar]BSW_OS 01 priority ceiling protocol(PCP)