html5 - history 历史管理

参考文章:

   w3c     :  http://www.w3.org/html/ig/zh/wiki/HTML5/history

 张鑫旭  : http://www.zhangxinxu.com/wordpress/2013/06/html5-history-api-pushstate-replacestate-ajax/

   zawa   :   http://zawa.iteye.com/blog/1271031 

 

Demo : Demo 

截图:

代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>选项卡</title>
<style>
body {background: #444; }
p{margin:0;}
.tab_bor{width:500px;margin:20px auto;overflow:}
.tab_bor ul{padding:10px 10px 0 10px;margin:0; display:inline-block;}
.tab_bor li{border:1px solid #fff;border-bottom:none;background:#1b5775;color:#fff;font-weight:bold;padding:0 10px; line-height:32px; font-size:14px;float:left;margin:0 2px;list-style:none; cursor:pointer;border-bottom:none;}
.tab_bor .active{ border:1px solid #fff;color:#fff; position:relative;top:1px;border-bottom:none;background:#187cc2;}
.tab_bor p{padding:10px;color:#fff;font-size:12px;border:1px solid #fff; display:none;background:#383838;height:100px;}
.tab_bor .show{display:block;background:#187cc2;}
</style>
<script>
window.onload = function(){var oDiv = document.getElementById('div1'),aLis = oDiv.getElementsByTagName('li'),aPs  = oDiv.getElementsByTagName('p');for( var i=0,len = aLis.length;i<len;i++ ){aLis[i].index = i;aLis[i].onclick = function(){var index = this.index ;var name = this.dataset.name; var title = '选项卡'+(index+1);document.title = title;history.pushState(index,title, '#'+name);for( var i=0,len = aLis.length;i<len;i++ ){		aLis[i].className = '';aPs[i].className = '';}this.className = 'active';aPs[ index ].className = 'show';}} if( history.pushState ){window.onpopstate = function( ev ){var ev = window.event || ev;var state = ev.state || 0;for( var j=0,len = aLis.length;j<len;j++ ){		aLis[j].className = '';aPs[j].className = '';}aLis[state].className = 'active';aPs[state].className = 'show';}}window.onhashchange = function(){setLocHistory();}setLocHistory();function setLocHistory(){var locName = location.href.split("#")[1] || 'tab1';for( var i=0,len = aLis.length;i<len;i++ ){		if( locName == aLis[i].dataset.name ){for( var j=0,len = aLis.length;j<len;j++ ){		aLis[j].className = '';aPs[j].className = '';}aLis[i].className = 'active';aPs[i].className = 'show';}}}}
</script></head>
<body><div class="tab_bor" id="div1"><ul><li class="active" data-name="tab1">标签一</li><li data-name="tab2">标签二</li><li data-name="tab3">标签三</li><li data-name="tab4">标签四</li></ul><p class="show"  data-name="tab1">内容一</p><p  data-name="tab2">内容二</p><p  data-name="tab3">内容三</p><p data-name="tab4">内容四</p></div>
</body>
</html>

 

后记:

这“history.pushState” 必须在服务端才能生肖,所以这页面在服务端打开。

大致讲讲api 前边的文章已经很详尽了:

history.pushState 三个参数  第一个参数为存储的数据,第二值是设置document.title的值(不过这个方法现在还没有完全实现),第三个值是url路径(这个需要和后台配合。。。。其实我也不是很懂。。。。);

window.onpopstate 相当于取值 ev.state 就是history.pushState存储的数据值;

window.onhashchange 只要location有变化就执行方法的事件;

他的应用当然有些说是做这个 翻页的记录什么的 其实也有可以做这些一站式开发的打开判断,我这demo就是模拟一站式开发的意思。

 

转载于:https://www.cnblogs.com/auok/p/4690134.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/258544.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

源码安装libjpeg-turbo1.2.1,无root权限

首先说明我的系统是redhat linux64位。没有root权限。我们想安装libjpeg-turbo. 下面介绍具体的安装步骤。 本来想安装最新的版本&#xff0c;但是最后失败了&#xff0c;无奈安装成1.2.1. 1. 下载源码&#xff1a; https://zh.osdn.net/projects/sfnet_libjpeg-turbo/download…

Android开发学习---使用Intelij idea 13.1 进行android 开发

Android开发学习---使用Intelij idea 13.1 进行android 开发 原文:Android开发学习---使用Intelij idea 13.1 进行android 开发1.为什么放弃eclipse?太卡!! 实在受不了eclipse的卡了,运行WEB项目还好,但android开发实在太慢,太慢!经常卡死,CPU经常被占满! 看网上很多人都说比I…

python滑动条来设置阈值houghcircle_OpenCV Python,为什么Hough Circle Transform找不到所有圆圈?...

我搜索了很长时间可能出错但我并不真正了解参数和预处理的影响我无法发布图片,但是在一张非常清晰的欧元照片上,该程序识别出一些圈子,而不是其他一些圈子,甚至可以像其他人一样清楚.这是我的代码&#xff1a;‘$’import cv2import numpy as npfilename rC:\Users\roseline\D…

Logcat打印调试信息

Android Logcat调试中的V、D、I、W、E的分别代表什么&#xff1f; Log.v -- 黑色 -- verbose infoLog.d -- 蓝色 -- debug infoLog.i -- 绿色 -- infoLog.w -- 橙色 -- warnLog.e -- 红色 -- error info//Log.ASSERT -- 断言 //Log.wtf() (1、Log.v 的调试颜色为黑色的&#xf…

opencv中的椭圆拟合

首先贴一个最简单的程序&#xff1a;访问&#xff1a;https://blog.csdn.net/guduruyu/article/details/70069426 //创建一个用于绘制图像的空白图 cv::Mat image cv::Mat::ones(480, 640, CV_8UC3); //设置蓝色背景 image.setTo(cv::Scalar(100, 0, 0)); //输入拟合…

unix c 11

多线程(thread) 操作系统支持多进程&#xff0c;进程内部使用多线程。 进程是 重量级的&#xff0c;拥有自己 独立的内存空间。 线程是 轻量级的&#xff0c;不需要拥有自己 独立的内存空间&#xff0c;线程的内存空间&#xff1a;1 共享进程的内存空间 2 每个线程拥有…

C# .net core 使用自定义的WebProxy

为什么80%的码农都做不了架构师&#xff1f;>>> 因为.net core 的System.Net 中没有提供WebProxy这个方法,所以可以根据需求实现一个. public class CoreWebProxy : IWebProxy{public readonly Uri Uri;private readonly bool bypass;public CoreWebProxy(Uri uri,…

2015年08月

2015年07月 - 2015年09月 ● 一般而言。。。 一般而言&#xff0c;牙周病轻者有口臭、牙龈红肿疼痛、刷牙流血等症状&#xff0c;严重时会造成牙龈萎缩、牙齿敏感、牙齿摇动等情况。口腔没有在饮食后30分钟清洁就会逐渐转化为酸性环境&#xff08;PH值约5.5&#xff09;&#x…

python类汇总_Python 类总结

Python可以继承多个父类&#xff0c;多重继承。类支持多个对象的产生&#xff0c;命名空间的继承&#xff0c;运算符重载1)、类产生多个实例对象Python OOP模型中的两种对象&#xff1a;类对象和实例对象。类对象提供默认的行为&#xff0c;是实例对象的工厂。实例对象是程序处…

matlab ,python,c++关于格式化输出数字的表达

我们想要格式化输出1,2,3&#xff0c;...为001,002,003 ... 那么在matlab,python,c该如何表达呢&#xff1f; matlab: >> filedirsprintf(%03i,10)filedir 010 or >> imagenamenum2str(10,%03d)imagename 010 python: index_str %03d % 10index_str Ou…

读取Exchange的用户未读邮件数的几种方法

【http://www.cnblogs.com/nbpowerboy/p/3539422.html】 可以使用ExchangeServiceBinding获取邮件&#xff0c;他相当于outlook, 来获取服务器的未接受的邮件. 至于 “该帐户无权模拟所请求的用户 ” ,是由于在exchange服务器上面没有配置模拟账户. 需要在Exchange Management …

IOS第七天(2:UiTableView 加上数据分离)

****加上数据分离 #import "HMViewController.h" #import "HMStudent.h"interface HMViewController () <UITableViewDataSource> property (weak, nonatomic) IBOutlet UITableView *tableView;/** 数据列表 */ property (nonatomic, strong) NSArr…

观点:Linux 上的杀毒软件

刚刚进入二月&#xff0c;在360安全卫士 for Linux瞬间更名为360安全卫士国产系统专版。紧接着不久&#xff0c;Dr.Web 宣布发现一款可能源自 ChinaZ 的 Linux 系统的后门程序。加之又被朝内媒体炒作起来的 OpenSSL 基金会事宜&#xff0c;不由得思绪飘溢&#xff0c;再看看 Li…

使用opencv的LBF算法进行人脸关键点检测

首先下载最新的opencv 和opencv_contrib, 然后按照在Windows下编译扩展OpenCV 3.1.0 opencv_contrib的方法进行编译&#xff0c;其中核心一点就是先编译opencv&#xff0c;再在OPENCV_EXTRA_MODULES_PATH中加入opencv_contrib的modules的路径。 编译好了后就可以进行人脸关键…

scala case class 继承_数字硬件系统设计之一:Scala快速入门(2)

原想简单笼统介绍一下scala&#xff0c;后感觉这么做意思不大&#xff0c;网友看了和没看一样&#xff0c;还是应该稍微详细具体一点&#xff0c;故而把系列编号由(上)(中)(下)&#xff0c;改为(上)(2)(3)(4)(5)....,(上)就是(1)吧&#xff0c;以下内容部分节选于我们即将出版的…

Ubuntu下安装FTP服务及使用(VSFTPD详细设置)(二)

vsftpd 作为一个主打安全的FTP服务器&#xff0c;有很多的选项设置。下面介绍了vsftpd的配置文件列表&#xff0c;而所有的配置都是基于vsftpd.conf这个配置文件 的。本文将提供完整的vsftpd.conf的中文说明。学习本文的内容将有助于你初步了解vsftpd的配置文件&#xff0c;但针…

crontab命令

前一天学习了 at 命令是针对仅运行一次的任务&#xff0c;循环运行的例行性计划任务&#xff0c;linux系统则是由 cron (crond) 这个系统服务来控制的。Linux 系统上面原本就有非常多的计划性工作&#xff0c;因此这个系统服务是默认启动的。另外, 由于使用者自己也可以设置计划…

调查显示企业对 Linux 开发人才需求日渐增长

根据2014年Linux就业报告调查显示&#xff0c;随着Linux平台增长&#xff0c;Linux平台开发者就业需求较去年提升了7%&#xff0c;技术公司招聘Linux开发经历的人才需求达到 77%&#xff0c;这是来自Dice和Linux基金会共同对就业市场对Linux人才的全景式调查&#xff0c;调查访…

求圆和椭圆上任意角度的点的坐标

圆上任意角度的点的坐标 如上图&#xff0c;给定圆心&#xff08;Cx,Cy&#xff09;,半径为R&#xff0c; 求θ\thetaθ对应的点的坐标&#xff1f; 此处θ\thetaθ是相对于水平轴的角度。 显然我们可以使用极坐标转换来求&#xff1a; {pxCxRcos(θ)pyCyRsin(θ)\left\{\begi…

BZOJ ac100题存档

不知不觉AC100题了&#xff0c;放眼望去好像都是水题。在这里就做一个存档吧&#xff08;特别感谢各位大神尤其是云神http://hi.baidu.com/greencloud和丽洁姐http://wjmzbmr.com/的blog提供的题解&#xff09; 代码什么的有时间在放。 1000: AB Problem 好吧&#xff0c;这也算…