`
李俊良
  • 浏览: 145311 次
  • 性别: 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。 搞得那么复杂。哈哈

相关推荐

    微信小程序学习用demo:豆瓣电影:实现搜索历史记录

    5. 数据管理:在页面的JS文件中,我们需要维护一个数据对象,比如`data.searchHistory`,保存搜索历史记录。当用户进行新的搜索时,更新这个数据并同步到本地存储。 6. 状态管理:若要实现搜索历史记录的持久化,...

    web前端单页面应用

    单页面应用(Single Page Application,简称SPA)是一种现代的Web应用程序设计模式,它在用户与网站交互时无需加载整个新页面,而是仅更新部分DOM(文档对象模型)来刷新视图。这种设计极大地提高了用户体验,减少了...

    一个单页面应用程序SPA的迷你javascript路由器这是小型干净快速

    单页面应用程序(SPA)是现代Web开发中的一个重要概念,它改变了传统的多页面浏览模式,将整个应用程序封装在一个或几个HTML页面内,通过JavaScript动态更新页面内容来实现页面间的导航。在这样的架构下,一个高效的...

    SPA单页面开发方式DEMO

    **SPA(Single Page Application)单页面应用开发方式详解** SPA是一种现代Web应用程序设计模式,它在用户与应用程序交互时,只加载一个HTML页面,然后通过JavaScript动态更新该页面以实现不同视图之间的切换,无需...

    免授权脱单交友盲盒H5+小程序+APP源码.rar

    5. **数据库设计**:源码中应有数据库结构设计,包括用户信息、聊天记录、匹配历史等数据表,确保数据的安全存储和高效检索。 6. **安全性与隐私保护**:作为交友应用,用户隐私至关重要。源码应包含相应的安全措施...

    用vb制作的功能简单的单页面浏览器

    - **WebBrowser控件**:VB中用于在应用程序内嵌入Web浏览功能的组件,它可以加载并显示网页,执行JavaScript,以及与网页进行交互。 - **主要属性**:`Navigate` 方法用于加载指定URL的网页;`Document` 属性提供...

    观影网络应用程序:一个小型网络应用程序

    电影网络应用程序是一个专门为用户提供便捷观影体验的小型网络应用。它集成了浏览、搜索和播放功能,使得用户在享受电影和电视节目时能感受到更为舒适的娱乐环境。以下将详细阐述该应用涉及的技术点和开发过程。 1....

    聊天室应用程序,显示用户

    在IT领域,构建一个聊天室应用程序是一个常见的项目,它涉及到多方面的技术知识。"聊天室应用程序,显示用户"这一标题表明我们关注的是一个允许用户进行实时交流并展示用户相关信息的平台。描述中提到的"显示用户...

    简单的html5聊天对话展示(html+jq+css)

    【正文】 本项目是一个基于HTML5、jQuery和CSS构建的简单聊天对话展示示例,旨在创建一个纯聊天框...开发者可以根据实际需求,扩展这个基础框架,添加用户认证、表情支持、文件发送等功能,构建更完整的聊天应用程序。

    IPanel应用开发指南

    这部分介绍了iPanel提供的扩展功能模块,包括状态提示、MP3播放、弹出窗口、视频控制、音量控制、焦点风格设置、按键捕获、透明效果、全局变量控制、Frame控制、历史记录控制以及与底层的交互和调试接口。...

    JSP论坛系统-历史记录

    而Java作为后端语言,提供了强大的功能和可移植性,是构建复杂Web应用程序的理想选择。 1. **JSP基本概念** - JSP页面由HTML和嵌入的Java代码组成,这些代码可以是脚本元素(scriptlets)、表达式、指令或声明。 ...

    draft_frontend:NFL草稿历史记录应用程序的Vue.js前端

    Vue.js是目前非常流行的前端JavaScript框架之一,尤其适用于构建用户界面和单页应用程序(SPA)。在"draft_frontend"项目中,我们看到它被用于开发一个关于NFL(美国国家橄榄球联盟)草稿历史记录的应用程序。这个...

    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 ...

    快递实时查-微信小程序

    4. **历史记录保存**:为了方便用户查看之前查询过的快递信息,小程序通常会保存用户的查询记录,用户可以随时查看过去查询过的快递状态。 5. **多单管理**:对于有多个快递包裹的用户,小程序通常提供批量查询功能...

    mithriljs用于构建单页应用程序的现代客户端Javascript框架

    Mithril.js是一款轻量级、高效的现代JavaScript框架,专为构建单页面应用程序(SPA)设计。它以其小巧的体积(8.87 KB gzip压缩后)和出色的性能而受到开发者喜爱。Mithril.js的核心特性包括虚拟DOM、声明式路由和...

    html5做的精美象棋游戏源码

    HTML5是一种先进的网页开发技术,它极大地扩展了Web应用程序的功能,使得开发者能够创建出更加丰富、交互性更强的网页内容。这款"html5做的精美象棋游戏源码"就是一个利用HTML5特性构建的在线游戏,它不仅展示了...

    html5各种页面切换效果和模态对话框用法总结

    HTML5 是一种强大的标记语言,用于构建现代网页和应用程序。在HTML5中,开发者可以利用新的特性和API来实现丰富的用户体验。本文将深入探讨HTML5中的页面切换效果和模态对话框的用法。 首先,页面动画是提升用户...

    电信设备-基于HTML的PLC控制的生产线设备信息发布装置.zip

    此外,页面还需要支持实时刷新和历史数据查询功能,以便追溯设备运行的历史记录。 7. 扩展性与兼容性:考虑到生产线可能的扩展和升级,系统设计应具备良好的扩展性,能适应新增设备或功能的需求。同时,兼容多种...

    深入探究HTML5的History API

    而HTML5的History API引入后,我们不仅能够添加历史记录,还可以在地址栏中更新URL,这对于单页面应用程序(SPA)尤其有用,因为它使得SPA能够拥有更自然的导航体验。 `history.pushState()`方法用于在历史记录栈中...

    一个基于VueVant开发的移动端H5理财产品页面用于学习和记录开发知识

    它强调简洁的API设计,易学易用,使得开发者能够快速构建单页应用(SPA)或者复杂的Web应用程序。Vue.js的核心特性包括虚拟DOM、组件化、响应式数据绑定以及指令系统,这些都极大地提高了开发效率。 Vant是滴滴出行...

Global site tag (gtag.js) - Google Analytics