H5 应用程序返回button的js代码设计,设计仿stack
history.back();
该代码具有天然的缺陷,二手知道,于H5应用,尤其是模仿移动应用程序时,,这是不够。
在放大期js为了实现类似特征,请轻喷。

不多说,上代码:
/**
* Created by piggsoft@163.com on 2015/5/28.
*/
var historyUtils = {
add : function (url) {
var historyArray = historyUtils.getLocal();
if (!historyArray) {
historyArray = [];
}
var currentPage = historyArray.pop();
if (currentPage && currentPage == url) {
//do nothing
} else if (currentPage){
historyArray.push(currentPage); //历史里面没有如今传入的url。在加回去
}
historyArray.push(url);
historyUtils.saveLocal(historyArray);
},
back : function() {
var historyArray = historyUtils.getLocal();
var currentPage = historyArray.pop();//去掉当前页面,pop取最后,相似stack
var history = historyArray.pop();
if (!history) {//没有历史页面
historyUtils.add(currentPage);//将当前页面增加回数组中
return;
}
historyUtils.saveLocal(historyArray);
window.location.href = history;
},
getLocal : function() {
var result = window.sessionStorage.getItem(historyUtils.key);
if (!result) {
return null;
}
return JSON.parse(result);
},
saveLocal : function(data) {
window.sessionStorage.setItem(historyUtils.key, JSON.stringify(data));
},
init : function() {
historyUtils.saveLocal([]);
},
key : "_history_"
} historyUtils.add(window.location.href);
在须要实现back的地方调用
historyUtils.back();
版权声明:本文博主原创文章,博客,未经同意不得转载。
H5 应用程序返回button的js代码设计,设计仿stack的更多相关文章
- 移动手机端H5无缝间歇平滑向上滚动js代码
在没结合css3的transform实现平滑过渡前,我都是用的jquery的animate方法,此方法在PC端基本看不出来有稍微卡顿的现象,但是在性能不高的手机上使用该方法,就会有明显的卡顿现象,不够 ...
- IE的debug工具对程序进行debug跟踪JS代码
2015/8/31 (其他的:显示zjfy_app_sys_ip.html,只需关闭启用保护模式) 显示ie的debug,F12-->Ctrl + P 扩展:第一步,在程序中设置断点,如图所示左 ...
- Lodop获取全部JS代码,传统JS模版的生成
Lodop模版有两种方法,一种是传统的JS语句,可以用JS方法里的eval来执行,一种是文档式模版,是特殊格式的base64码,此篇博文介绍传统JS模版的生成方法.两种模版都可以存入一下地方进行调用, ...
- WinForm程序执行JS代码的多种方法以及使用WebBrowser与JS交互
方法一 使用微软官方组件Interop.MSScriptControl 1.msscript.ocx下载的地址 http://www.microsoft.com/downloads/details ...
- 前端程序员的蜕变——JS的 event 对象属性、使用实例、兼容性处理(极大提高代码效率、减少代码量)
下面讨论一下 js 中的 Event 对象,主要从以下三个方面详细的描述(点击标题可跳转到对应部分): 1.什么是event 2.怎么用event,用他该注意什么,几个简单实际应用 3.event在不 ...
- 微信小程序中的微信支付js代码和流程详解
微信支付流程 步骤 (一)获取用户的信息 (二)统一下单(返回的prepay_id用于第(三)步的请求参数) (三)发起支付请求 操作(这边假设你已经获得了用户的openId) (一).获取用户ope ...
- ReactMix框架,让你实现一套js代码,基于ReactNative在H5,App都能完美跑起来,Write Once,Run Anywhere
ReactNative框架推出已经有一段时间了,相信很多小伙伴都在尝试实现Write Once, Run Anywhere的梦想,比如淘宝的ReactWeb等等,但是这些框架都局限于因为ReactNa ...
- 弹性返回顶部JS代码
弹性返回顶部JS代码 弹性返回顶部JS代码点击下载
- 一行代码巧妙实现iOS返回button
一行代码巧妙实现iOS返回button: self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithImage:[ ...
随机推荐
- MVC3 带查询的分页Helper
接上篇mvc3 分页Helper. 带查询的分页Helper是在上一篇分页的基础上来的.下面看代码: 首先,在System.Web.Mvc命名空间下的自定义类HtmlPage下面添加一个用于处理“查询 ...
- Flex4开发笔记(与JAVA交互)
(由于本人也是第一次接触flex开发,因此将开发过程中问题记录留档) 一.数据交换过程 借助BlazeDS可以实现flex与java之间的数据交互,大体流程如下: 1.导入blazeds的文件(配置w ...
- Yahoo团队经验:网站性能优化的34条黄金法则
Yahoo团队总结的关于网站性能优化的经验,非常有参考价值.英文原文:http://developer.yahoo.com/performance/rules.html 1.尽量减少HTTP请求次数 ...
- TelephonyManager
每台手机有一个唯一的设备ID
- javascript抽象工厂模式
<!doctype html><html lang="en"><head> <meta charset="UTF-8" ...
- Android在应用中依据包名启动另外一个APP
以下为TestIntentData工程 MainActivity如下: package cn.testintentdata; import java.util.List; import android ...
- SPOJ QTREE4 lct
题目链接 这个题已经处于花式tle了,改版后的spoj更慢了.. tle的话就多交几把... #include <iostream> #include <fstream> #i ...
- 关于Apacheserver的訪问控制
Apache的訪问控制指对不论什么资源的不论什么方式的訪问控制. 一.基于主机或者IP地址的控制 这样的訪问控制基于訪问者的主机名或者IP地址,通过使用 Deny 和 Allow 指令.实现同意或者禁 ...
- win7(32 bit) 环境下点击打印预览报错解决办法
如题,报错截图如下 : 解决办法如下: 1.关闭系统数据执行保护.具体操作: 在win7 系统命令行中执行如下命令: bcdedit.exe /set {current} nx Alw ...
- scala io,ubuntu常见配置
Ubuntu的scala环境配置 配置scala环境变量同时需要配置java的环境变量 配置方法: 1.先下载linux的相应版本的jdk与scala的二进制压缩包并解压. 解压方法: 先到jdk ...