HTML5管理与实际历史的分析(history物)

HTML5管理与实际历史的分析(history物)

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

  HTML5新进入历史的管理,更新history对象允许国家的经营历史更方便。

在现代Web应用。用户”前进”和”退却”button切换历史页面。这使得新的页码不会打开一个新的网页前进和后退自如,改善用户体验。

  经haschange事件,可以知道URL的參数什么时候发生了变化,也就是什么时候该有所反应。

通过状态管理的API,可以在不载入新页面的情况下改变浏览器的URL。所以须要使用history.pushState()方法。

history.pushState()方法接收三个參数:1.要存的内容 2.标题(一般写个空的字符串) 3.地址(可选)。小样例例如以下

  JavaScript代码

history.pushState({name: "menglong"}, '', "li.html");

  运行了history.pushState()方法后,新的状态信息就会被增加到历史状态栈,而浏览器地址栏也会变成新的相对URL。

可是,浏览器并不会想server发送请求。即使历史状态改变之后查新location.href也会返回与地址栏中同样的地址。

另外,第二个參数眼下还没有浏览器实现,所以全然能够仅仅传入一个空字符串就可以,或者一个短标题也能够。

第一个參数则应该尽可能提供初始化页面状态所需的各种信息。

  由于history.pushState()方法会创建新的历史状态,所以会发现”后退”button也能够使用了。按下”后退”button,会触发window对象的popstate事件。Popstate事件的事件对象有一个state属性,这个属性就包括着当初以第一个參数传递给pushState()的状态对象。

小样例例如以下

  JavaScript代码

window.addEventListener('popstate',function(ev){
	var state = event.state;
	if(state){ // 当第一个页面载入的时候state为空
		processState(state)
	}
}, false);

  得到了这个状态的对象后。必须把页面重置为状态对象中的数据表示的状态(由于浏览器不会自己主动为你做这些)。记住,浏览器载入的第一个页面没有状态,所以”后退”阿牛返回浏览器载入的第一个页面时。event.state值为null。

  要更新当前历史状态,能够调用replaceState(),传入的參数与pushState()方法的前两个參数同样。

调用replaceState()不会在历史状态栈中创建新状态,仅仅会重写当前状态。

小样例例如以下

  JavaScript代码

history.replaveState({name: "meng"}, "meng1234");

  在使用HTML5的历史状态管理机制的时候。须要确保使用pushState()创造的每个”假”URL。在Webserver上都有一个真的、实际存在的URL与之相应。

否则,单机”刷新”button会导致404错误。

  支持HTML5历史状态管理的浏览器有Chrome、Safari 5+、Firefox 4+和Opera 11.5+。在Safari和Chrome中,传递给pushState()或replaceState()的状态对象中不能包括DOM元素。

而Firefox支持在状态对象中包括DOM元素。Opera还支持一个history.state属性,它返回当前状态的状态对象。以下就是小样例时间了,结合小样例才干更好的理解HTML5中的历史管理。

  加入href值实现历史管理

  HTML代码

<input type="button" value="35选7" id="input1" />
<div id="div1"></div>

  JavaScript代码

//onhashchange : 事件 : 当hash值改变的时候触发的事件

//hash改变就会出现就会出现历史管理

window.onload = function(){
	var oInput = document.getElementById('input1');
	var oDiv = document.getElementById('div1');
	
	var obj = {};
	
	oInput.onclick = function(){
	
		var number = randomNum(35,7);
		
		oDiv.innerHTML = number;
		
		var oRN = Math.random();
		
		obj[oRN] = number;
		
		window.location.hash = oRN;
	
	};
	
	
	window.onhashchange = function(){
	
		var number = obj[window.location.hash.substring(1)] || '';
		
		oDiv.innerHTML = number;
	
	};
	
	
	function randomNum(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;
	
	}
	
};

  通过HTML5中history对象实现历史管理

  HTML代码

<input type="button" value="35选7" id="input1" />
<div id="div1"></div>

  JavaScript代码

//pushState : 三个參数:1.要存的内容 2.标题(一般写个空的字符串) 3.地址(可选)

//history.pushState({name: "menglong"}, '', "li.html");

window.onload = function(){
	var oInput = document.getElementById('input1');
	var oDiv = document.getElementById('div1');
	
	var iNow = 0;
	
	oInput.onclick = function(){
	
		var number = randomNum(35,7);
		
		oDiv.innerHTML = number;

		history.pushState(number,'',iNow++);
	
	};
	
	
	window.onpopstate = function(ev){  //历史管理改变,就会触发
		
		var number = ev.state || '';

		oDiv.innerHTML = number;
		
	};
	
	
	function randomNum(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;
	
	}
	
};

  HTML5实战与剖析之历史管理(history对象)就为大家介绍到这里了。很多其它有关HTML5的相关小内容尽在梦龙小站的HTML5实战与剖析频道。

感谢大家的支持。

版权声明:本文博主原创文章,博客,未经同意不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/116790.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • web实现QQ第三方登录「建议收藏」

    web实现QQ第三方登录「建议收藏」开放平台-web实现QQ第三方登录应用场景web应用通过QQ登录授权实现第三方登录。操作步骤1注册成为QQ互联平台开发者,http://connect.qq.com/2准备一个可访问的域名,

  • torch torchvision 下载安装与使用

    torch torchvision 下载安装与使用本文仅供学习交流使用,如侵立删!联系方式及demo下载见文末torch和torchvision版本对应关系表torch下载官方下载地址:https://download.pytorch.org/whl/torch_stable.html选择对应版本下载即可torch安装安装命令:pipinstalltorch-1.5.1+cpu-cp36-cp36m-win_amd64.whlpipinstalltorchvision-0.6.0+cpu-cp36-cp

  • 光纤百兆口和千兆口_交换机万兆光口能使用千兆模块吗

    光纤百兆口和千兆口_交换机万兆光口能使用千兆模块吗10gb万兆以太网光口向下无法兼容千兆光口。10G以太网的物理层已经改变,10G端口连接千兆端口无法工作。千兆以太网、万兆以太网与高速以太网的区别:1.传统以太网(十兆以太网)采用曼彻特斯编码;2.快速以太网(百兆以太网)采用4B/5B码;3.千兆以太网采用8S/10B;4.万兆以太网IEEE802.3提出的新的MB810编码方式。5.传统以太网物理层标准有10BASE2、10BASE5和10BA…

  • Python&R LEfSe 分析

    Python&R LEfSe 分析软件安装与路径添加 在涉及到物种或基因组间差异分析的方法中,LEfSe是目前常见的方法。LEfSe实现的方式主要有在线分析和本地分析,在线分析会受到网络及其他因素影响,因而速度可能极慢。本地分析可基于Windows或Linux系统,调参更加灵活。本文以Windows系统为例,向大家展示如何在自己的本本上运行LEfSe,再也不用去求公司了…… 首先,我们要安装好Pyhthon(2.7版本)和R(…

  • golang 2021激活码【注册码】

    golang 2021激活码【注册码】,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • Android应用程序开发以及背后的设计思想深度剖析

    Android应用程序开发以及背后的设计思想深度剖析原文链接:http://www.uml.org.cn/mobiledev/201211063.asp#2初步过了一下,很多地方写得还是比较深入的,先转载,后面再仔细看看。 本文内容,主题是透过应用程序来分析Android系统的设计原理与构架。我们先会简单介绍一下Android里的应用程序编程,然后以这些应用程序在运行环境上的需求来分析出,为什么我们的Android系统需要今天这样的设

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号