`
李俊良
  • 浏览: 141222 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

html5单页面应用程序之历史记录控制

 
阅读更多
window.addEventListener("hashchange",function(){
	var hash = window.location.hash.replace("#","");
	var sp = hash.split("~");
	console.log("current router is ",sp,hash);
	var controller = sp[0] || "home";
	
	if(sp.length == 2){
		var params = sp[1];
		var t = params.split("&");
		console.log(t);
		var states = {};
		for(var i = 0 ; i < t.length ; i++){
			states[t[i].split("=")[0]] = t[i].split("=")[1] || "";
		}
	}
	KS.Router.navTo(controller,states,true);
},false);

 通过hashchange监听,并且在真正实现跳转的时候讲history存入即可

run:function(){
		var hash = window.location.hash.replace("#","");
		var sp = hash.split("~");
		console.log("current router is ",sp,hash);
		var controller = sp[0] || "home";
		
		if(sp.length == 2){
			var params = sp[1];
			var t = params.split("&");
			console.log(t);
			var states = {};
			for(var i = 0 ; i < t.length ; i++){
				states[t[i].split("=")[0]] = t[i].split("=")[1] || "";
			}
		}
		if(KS.Router.routers[controller]){
			var state = window.history.state;
			KS.Router.navTo(controller,state);
		}else{
			var defaultController = this.routers[KS.config.welcome];
			window.history.pushState(null,"home page","./");
			defaultController.run();
		}
	},
	navTo:function(controller,pageParam,replace){
		for(var i = 0 ; i < KS.events.length ; i++){
			KS.events[i].el.removeEventListener(KS.events[i].type,KS.events[i].name,false);
		}
		KS.cController = controller;
		var location = window.location;
		console.log("nav to "+controller,pageParam);
		var defaultController = this.routers[controller];
		console.log("routers is "+ controller);
		if(pageParam)
				pageParam['controller'] = controller;
		else 
			pageParam  = {controller:controller}
		
		if(controller != "play"){
		}else{
			KS.playParam = pageParam;
		}
		//KS.resetNav(controller);
		defaultController.run();
	}

 

分享到:
评论
1 楼 46311875 2014-09-05  
SB。 搞得那么复杂。哈哈

相关推荐

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    第5章 ASP.NET应用程序 5.1 剖析ASP.NET应用程序 5.1.1 应用程序域 5.1.2 应用程序生命周期 5.1.3 应用程序更新 5.1.4 应用程序目录结构 5.2 global.asax应用程序文件 5.2.1 应用程序事件 5.2.2 ...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    Activity Activity是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务,是一个负责与用户交互的组件 SSH 为 Struts+Spring+Hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架。...

    ASP.NET4高级程序设计(第4版) 3/3

    第5章 ASP.NET应用程序 137 5.1 剖析ASP.NET应用程序 137 5.1.1 应用程序域 137 5.1.2 应用程序生命周期 138 5.1.3 应用程序更新 139 5.1.4 应用程序目录结构 139 5.2 global.asax应用程序文件 140 ...

    EmailContacts:启用Rabbit MQ的典型中型ServiceStack应用程序的布局示例

    EmailContacts应用程序的目的是管理任何RDBMS数据库中的联系人,提供一种能够向其发送消息并维护任何已发送电子邮件的滚动历史记录的表单。 该应用程序还提供了一个选项,使电子邮件可以通过发送和处理。 整个UI...

    history_api:改善网络历史记录状态的一些想法

    应用历史记录状态 作者: 亚历克斯·拉塞尔 汤姆·威尔金森 参加 目录 服务人员导航事件 内置客户端路由 开放式设计问题 参考和致谢 介绍 在对动态Web应用程序执行客户端更新时,应用程序开发人员面临一系列挑战...

    ASP.NET 3.5 开发大全1-5

    1.2 .NET应用程序需框架 1.2.1 什么是.NET应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET Framework 类库 1.3 安装Visual Studio 2008 1.3.1 安装Visual Studio 2008 1.3.2 主窗口 1.3.3 文档窗口 1.3.4 工具...

    ASP.NET3.5从入门到精通

    1.2 .NET 应用程序需框架 1.2.1 什么是.NET 应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET Framework 类库 1.3 安装Visual Studio 2008 1.3.1 安装Visual Studio 2008 1.3.2 主窗口 1.3.3 文档窗口 1.3.4 ...

    ASP.NET 3.5 开发大全11-15

    1.2 .NET应用程序需框架 1.2.1 什么是.NET应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET Framework 类库 1.3 安装Visual Studio 2008 1.3.1 安装Visual Studio 2008 1.3.2 主窗口 1.3.3 文档窗口 1.3.4 工具...

    ASP.NET 3.5 开发大全

    1.2 .NET应用程序需框架 1.2.1 什么是.NET应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET Framework 类库 1.3 安装Visual Studio 2008 1.3.1 安装Visual Studio 2008 1.3.2 主窗口 1.3.3 文档窗口 1.3.4 工具...

    ASP.NET 3.5 开发大全word课件

    1.2.1 什么是.NET应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET Framework 类库 1.3 安装Visual Studio 2008 1.3.1 安装Visual Studio 2008 1.3.2 主窗口 1.3.3 文档窗口 1.3.4 工具箱 1.3.5 解决方案管理器...

    ASPNET35开发大全第一章

    1.2.1 什么是.NET应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET Framework 类库 1.3 安装Visual Studio 2008 1.3.1 安装Visual Studio 2008 1.3.2 主窗口 1.3.3 文档窗口 1.3.4 工具箱 1.3.5 解决方案管理器...

    AJAX基础概念、核心技术与典型案例(内涵动态实例)

    程序描述:本章将介绍 GWT应用中高级应用的部分,包括各中组件和布局、如何发送XMLHttpRequest请求,以及如何解决浏览器历史记录问题等等,同时读者还将详细的了解RPC应用的开发过程。 /xmlsample/AjaxSample....

    Access+2000中文版高级编程

    13.4 应用自动化功能从Access运行其他应用程序 395 13.4.1 在Access中调用Word 396 13.4.2 在Access中调用Excel 402 13.4.3 在Access中调用Microsoft Graph 404 13.4.4 在Access中调用Microsoft Project 407...

    asp.net知识库

    清除网页历史记录,屏蔽后退按钮! 如何传值在2个页面之间 :要求不刷新父页面,并且不能用Querystring传值 Asp.net地址转义(分析)加强版 Web的桌面提醒(Popup) Using the Popup Object Click button only once ...

    Access 2000中文版高级编程(part1)

    13.4 应用自动化功能从Access运行其他应用程序 395 13.4.1 在Access中调用Word 396 13.4.2 在Access中调用Excel 402 13.4.3 在Access中调用Microsoft Graph 404 13.4.4 在Access中调用Microsoft Project 407 ...

Global site tag (gtag.js) - Google Analytics