关于浏览器回退默认行为的研究 回退保存页面状态

缘起:最近在研究 移动端的页面研发工作,由于之前从来没有专业开发过移动端页面,所以在开发过程中,可以说是处处有精彩,处处有收获.最让我意外的是,浏览器页面回退问题 就是个头疼的问题.

需求:我们的需求是,在a页面,打开b页面,之后b再回退到a页面,a页面仍然能保持 a刚刚打开b页面时的状态.

分析过程:最开始接到这个需求,觉得这也不是啥大需求啊,浏览器默认行为,就能支持吧,经过测试后,发现有的浏览器支持,有的不支持。有的页面支持,有的页面不支持,可以说,比较懵,最后决定,先分析一些基本的浏览器知识,之后再思考.

分析结果:
经过了长时间的分析后,对浏览器行为有了一个较深的了解,经验如下:

一.浏览器会记住页面滚动条位置的行为:
1.a页面为静态资源页面,当a打开b页面时,页面会记录滚动条位置.
2.a页面使用ajax请求数据,切ajax是同步请求,且页面其他ajax请求都遵循此规则时生效.
只要记住这两个规则,在开发时就会有一个清晰的思路.

二.解决方案总结:
1.可以使用单页应用的模式,进行开发,原理是 hash 路由. #
2.可以借用localstorage缓存,在a页面打开b时,记录页面元素位置,及页面元素,之后在回退时,直接从缓存中读数据.
3.可以借助 浏览器记住页面状态行为来解决.直接输出静态页面,优点时,无需控制行为,无需写多余的业务,去控制页面的行为.

我采用的方式是,页面借助 c# mvc razor技术,静态输出,之后用点击下一页,因为ajax不太好控制,翻页.分析了许多大厂的页面,也没太研究透,只是看他们都是静态页面输出。如果大家有更好的方式,可以评论哦,共同进步,互相学习.

原文地址:http://blog.51cto.com/7865145/2167887

时间: 2024-10-09 20:00:29

关于浏览器回退默认行为的研究 回退保存页面状态的相关文章

Fragment-如何监听fragment中的回退事件与怎样保存fragment状态

一.如何监听Fragment中的回退事件 1.问题阐述 在Activity中监听回退事件是件非常容易的事,因为直接重写onBackPressed()函数就好了,但当大家想要监听Fragment中的回退事件时,想当然的也想着重写onBackPressed()方法,这时候你会发现:Fragment中根本就没有onBackPressed()方法给你重写.这可怎么破! 想想,在前面的例子中,我们在Activity的一个fragment_container里依次Add进fragment1,fragment

javascript阻止事件冒泡和浏览器的默认行为

/*---------------------------    功能:停止事件冒泡    ---------------------------*/    function stopBubble(e) {        //如果提供了事件对象,则这是一个非IE浏览器        if ( e && e.stopPropagation )            //因此它支持W3C的stopPropagation()方法            e.stopPropagation();  

js 停止事件冒泡 阻止浏览器的默认行为(阻止超连接 # )

在前端开发工作中,由于浏览器兼容性等问题,我们会经常用到“停止事件冒泡”和“阻止浏览器默认行为”. 1..停止事件冒泡 JavaScript代码 //如果提供了事件对象,则这是一个非IE浏览器if ( e && e.stopPropagation )//因此它支持W3C的stopPropagation()方法e.stopPropagation(); else//否则,我们需要使用IE的方式来取消事件冒泡 window.event.cancelBubble = true;return fal

2.阻止浏览器的默认行为

在前端开发工作中,由于浏览器兼容性等问题,我们会经常用到"停止事件冒泡"和"阻止浏览器默认行为". 1..停止事件冒泡 JavaScript代码 //如果提供了事件对象,则这是一个非IE浏览器if ( e && e.stopPropagation )//因此它支持W3C的stopPropagation()方法e.stopPropagation(); else//否则,我们需要使用IE的方式来取消事件冒泡 window.event.cancelBubb

重置浏览器的默认样式(css reset)

(1)定义:首先css reset指的是重置浏览器的默认样式 (2)作用:因为现在的浏览器很多,并且每个浏览器都有自己的默认样式,这样就会导致一个页面在多个浏览器下展示产生差异,所以我们需要做一些处理使每个浏览器下展示一致,故需要css reset (3)内容:第一个:*{padding:0;margin:0;border:0;}第二个:你所用到的元素{padding:0;margin:0;border:0;},然而第一个虽然写起来简单,但是它却会将所有的标签重置,而我们可能没有必要将那么多的元

js 停止事件冒泡 阻止浏览器的默认行为(阻止超连接 #)

在前端开发工作中,由于浏览器兼容性等问题,我们会经常用到"停止事件冒泡"和"阻止浏览器默认行为". 1..停止事件冒泡 JavaScript代码 //如果提供了事件对象,则这是一个非IE浏览器if ( e && e.stopPropagation )//因此它支持W3C的stopPropagation()方法e.stopPropagation(); else//否则,我们需要使用IE的方式来取消事件冒泡 window.event.cancelBubb

js阻止浏览器的默认行为以及停止事件冒泡(用JQuery实现回车提交,兼容IE、FF浏览器) 转

1.阻止浏览器的默认行为 function stopDefault(e) { //如果提供了事件对象,则这是一个非IE浏览器 if(e && e.preventDefault) { //阻止默认浏览器动作(W3C) e.preventDefault(); } else { //IE中阻止函数器默认动作的方式 window.event.returnValue = false; } return false; } 2.停止事件冒泡 function stopBubble(e) { //如果提供

武汉兼职女:点击浏览器或者手机返回按钮,刷新历史页面解决方案

武汉兼职女:点击浏览器或者手机返回按钮,刷新历史页面解决方案 我前面文章中写了返回上一页并刷新页面 的方式.这个是我们点击某个按钮,来进行操作的.但是假如我们不是点击某个按钮,而是直接点击手机下面的返回按钮或者浏览器自带返回按钮,如何刷新之前的历史页面呢? 应用场景假如我们有如下页面列表信息页面 enter image description here 点击进入详情页面,在详情页面修改了数据. enter image description here 通过历史返回,再返回到列表信息页面,因为列表

【Framework】深入研究Asp.net页面的生命周期

介绍 Asp.net是微软.Net战略的一个组成部分.它相对以前的Asp有了很大的发展,引入了许多的新机制.本文就Asp.net页面的生命周期向大家做一个初步的介绍,以期能起到指导大家更好.更灵活地操纵Asp.net的作用. 当一个获取网页的请求(可能是通过用户提交完成的,也可能是通过超链接完成的)被发送到Web服务器后,这个页面就会接着运行从创建到处理完成的一系列事件.在我们试图建立Asp.net页面的时候,这个执行周期是不必去考虑的,那样只会自讨苦吃.然而,如果被正确的操纵,一个页面的执行周