前端随笔一——浏览器的历史回退自我实现

这是我第一次写随笔,不足的地方还望见谅。

首先说说我这次代码的由来,之前为了实现一个页面的前进和后退,一般会想到使用 history 的 back 函数,但有时候并不能完美的后退。有时会出现 A 后退到 B ,B 后退到 C ,然后 C 后退又回到了 B ,之后就是死循环了。查阅网上的资料后发现,可能是 B 页面有 Ajax 等影响 B 页面,使得从历史栈中加载出的 B 页面向后退请求并刷新了页面,使得 B 入栈了。对于这种情况,我看到有人说使用 sessionStorage 来解决。我尝试的写了一下,解决了。于是,共享一下自己的代码,肯定是有更好的方法的,只是我的知识还没有涉及到,望大家见谅。我只写了后退这个动作的入栈和出栈,想要实现前进的话,同样的道理,再写一个栈,在回退出栈时把出来的 URL 入栈保存就是了。

 1 /* 历史Url入栈;因网页中有Ajax,使得页面后退后刷新,back()函数后退后的页面Url也入栈,形成死循环。故重新实现history。 */
 2 function pushHistory(hisstr){
 3     if(sessionStorage.historyurl == null || sessionStorage.historyurl == ""){
 4         var array = new Array();
 5         array.push(hisstr);
 6         sessionStorage.historyurl = array.join(";");
 7     }else{
 8         var array = sessionStorage.historyurl.split(";");
 9         array.push(hisstr);
10         sessionStorage.historyurl = array.join(";");
11     }
12 }
13
14 /* 历史Url出栈 */
15 function popHistory(){
16     var array = sessionStorage.historyurl.split(";");
17     if(array.length <= 0){
18         return null;
19     }
20     var hisstr = array.pop();
21     sessionStorage.historyurl = array.join(";");
22     return hisstr;
23 }

原文地址:https://www.cnblogs.com/HcatTrees/p/8364852.html

时间: 2024-10-28 17:18:00

前端随笔一——浏览器的历史回退自我实现的相关文章

前端必读:浏览器内部工作原理

前端必读:浏览器内部工作原理 作者: Tali Garsiel  发布时间: 2012-02-09 14:32  阅读: 56974 次  推荐: 88   原文链接   [收藏] 目录 一.介绍 二.渲染引擎 三.解析与DOM树构建 四.渲染树构建 五.布局 六.绘制 七.动态变化 八.渲染引擎的线程 九.CSS2可视模型 英文原文:How Browsers Work: Behind the Scenes of Modern Web Browsers 一.介绍 浏览器可以被认为是使用最广泛的软

影响前端的Chrome浏览器36

新发现,在我开发过的组件中表格组件是采用Table生成的,而在Webkit内核浏览器中,Table的列顺序是倒着生成的,所以在组件中要做兼容. 现在Chrome浏览器版本已经升级到36了.发现Table的列顺序是正这生成,所以还要加入代码去判别webkit内核浏览器并且版本是36以下的 做兼容. 到此为止:以前,用Table元素使用insertCell生成的表格列的前端表格组件要有问题喽. 转载请注明出处:http://www.cnblogs.com/wsoft 影响前端的Chrome浏览器36

好程序员前端教程-关于浏览器的兼容问题

好程序员前端教程-关于浏览器的兼容问题常见浏览器兼容问题:1.li在IE中底部3像素的BUG.解决方案:在< li>上加float:left:即可解决 IE6中奇数宽高的BUG.解决方案:就是将外部相对定位的div宽度改成偶数.高度也是一样的. IE6文字溢出BUG.引发这种BUG有以下几个条件:1)是注释引起的,删除所有注释即可.2)hidden的input直接放在form下.3)display为none的div也有可能引发此bug.4)可以通过外面再包一次DIV解决.由注释造成文字溢出,属

主流浏览器内核介绍(前端开发值得了解的浏览器内核历史)

内核 首先得搞懂浏览器内核究竟指的是什么. 浏览器内核又可以分成两部分:渲染引擎(layout engineer 或者 Rendering Engine)和 JS 引擎.它负责取得网页的内容(HTML.XML.图像等等).整理讯息(例如加入 CSS 等),以及计算网页的显示方式,然后会输出至显示器或打印机.浏览器的内核的不同对于网页的语法解释会有不同,所以渲染的效果也不相同.所有网页浏览器.电子邮件客户端以及其它需要编辑.显示网络内容的应用程序都需要内核.JS 引擎则是解析 Javascript

前端随笔

学习前端的同学都知道,前端需要调试各种不同的浏览器以及浏览器的兼容性,以使ui展示的效果在浏览器中最大程度上接近活相似.但是我们常常遇到各种各样的bug.比如,明明设置了元素的高度,但是设置下一个元素的位置的时候,元素的位置就是错乱的.       时下比较流行的,瀑布流啊,响应式布局啊,第三方库啊(bootstrap,easyui)等等,不知道大家有没有发现,这些库以及这些库产生的原理,都跟float这个不起眼的属性息息相关,下面,我们来浅谈一下为什么float很重要的原因. 相信大家都知道,

web前端开发的浏览器兼容性

首先我们来看一下目前市面上常见的一些浏览器:ie.chrome.firefox.safari.opera.maxthon.360.qq.yy.uc.sogou.2345.淘宝.猎豹.世界之窗等 其中表现很出色的有chrome.firefox.safari等:而表现极差的就是ie6/7内核浏览器了,我们的兼容性工作大半都是围绕这两个浏览器内核展开 我们的常规处理方式是调试各浏览器网页显示效果.使用成熟的前端开发框架.运用css与hack技巧等 常见hack技巧 css _:ie6内核浏览器识别 c

前端开发跨浏览器计算页面大小、滚动高度

前端开发中跨平台.跨USER-AGENT的适配很繁琐 想要得到浏览器px大小非常烦.因此以下2个函数非常实用 这两个javascript函数很有用,用来计算浏览器页面大小,窗体大小,以及滚动高度,源码例如以下: function getPageSize() { var xScroll, yScroll; if (window.innerHeight && window.scrollMaxY) { xScroll = window.innerWidth + window.scrollMaxX

前端必备的浏览器知识(渲染过程、回流和重绘等)

常用哪几种浏览器测试?有哪些浏览器内核(Rendering Engine)? (Q1)浏览器:Chrome,IE,FireFox,Safari,Opera. (Q2)对应内核:Webkit,Trident,Gecko,Webkit,Presto.(国内的浏览器,除了傲游是直接基于Webkit开发的,其他基本都是基于谷歌在webkit上开发的Chromium,当然谷歌自己也是用的Chromium.另外值得的一提的是手机的系统(安卓.苹果)默认浏览器都是基于webkit内核的) 如何理解浏览器内核?

转:【web前端开发】浏览器兼容性处理大全

解决思路: ①.写代码的时候遵循W3C标准,按照最新稳定版本的IE或WebKit内核浏览器进行编码 ②.遇到部分无法全面解决浏览器兼容的时候,采取CSS的hack手段进行针对性微调.简单的说,CSS hack的目的就是使你的CSS代码兼容不同的浏览器. ③.遇到特别难解决的,可以用JS强制修改. 1.居中问题 div里的内容,IE默认为居中,而FF默认为左对齐,可以尝试增加代码margin: 0 auto; 2.高度问题 两上下排列或嵌套的div,上面的div设置高度(height),如果div