`
zendj
  • 浏览: 122091 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

怎样构建一个可刷新的无刷新应用 选项

阅读更多
来自: http://www.b3inside.com/b3/article.asp?id=244

又是一个拗口的标题!既然是“无刷新”应用,又何来“可刷新”的“无刷新” 应用之说呢?其实一点也不怪……

问题

As we 都知道,所谓基于AJAX的“无刷新应用”,一般就是指WEB应用中利用XmlHttp组件来实现一定的基于JavaScript后台异步数据传递的无刷新页面切换,以代替传统的基于HTML链接的“有刷新”页面切换。

这样的无刷新效果真的很酷,但是爱思考的开发者尝试一些时间之后就会发现一个最大的问题:我既然是无刷新了,那么对于一组无刷新的功能来说,也就是从打开网页起,所有的效果都是在当前页面的后台通过JavaScript异步调用XmlHttp来传递数据并替换当前页中的显示内容,没有传统的“有刷新”页面切换。但是,如果在某个状态,因为网络问题页面暂停载入了需要手动刷新,或者,用户想手动刷新一下当前页面获取更新的数据,或者哪怕是不小心按了一下“F5”或浏览器上的Refresh按钮会怎样呢?对了,这就是本文的标题提出的担心。如果没有特殊处理,那么,手动刷新页面过后,网页上的内容自然就回到最初的显示的内容,而不是手动刷新之前我们真正想要的数据了。是不是心中突然又一口闷气呢?:)大可不必~~

分析

对于以上问题,当然是有解决办法的!如著名的AJAX应用网站http://www.backbase.com/
就是一个很好的范例,大家可以亲自体验,无论在哪个页面手动刷新,都不会发生我们前面担心的问题~~发现没有呢?发现其中的玄机没?对了,就是“#”!!我们可以看到,每一次无刷新的页面切换之后,浏览器地址栏的内容都会改变,变成了什么呢?改变的内容都是在相同的网址(对于BackBase,自然都是http://www.backbase.com/这个首页了)之后,加上了#xxxx,这是什么呢?熟悉HTML的读者该想起来了,什么时候会出现这个“#”呢?对了,就是对我们来说最可爱最熟悉的,我们的万维网超链接的的鼻祖“<a>”。

不知道还有多少读者记得“#”原本的用处,那就是当前页面的内部定位功能。忘记了的朋友可以试试将下面的HTML建一个test.html,看看简单的效果。
<!--c1-->
CODE
<!--ec1--><a name="top">top</a>
<a href="#bottom">go to bottom</a>
<div style="height:800px">&nbsp;</div>
<a name="middle">middle</a>
<a href="javascript:var tmp = document.location = 'test.html#top'">go to top</a>
<div style="height:800px">&nbsp;</div>
<a name="bottom">bottom</a>
<a href="test.html#middle">go to middle</a>
<!--c2-->
<!--ec2-->
如果href中指定的“#”后的内name在指定页中没有定义,浏览器则简单的定位到指定页的页首。除了以一个链接的形式来调转之外,也可以通过修改document.location = ‘test.html#top’ 这样的方式来重订向。凡是这样跳转的页面,因为实际上还是在当前页面内,因此,网页是不会有物理刷新的。OK,这就是我们实现“可刷新的无刷新应用”的方案。

模式

作为一个设计模式,基于#链接的“可刷新的无刷新应用”的方案对于任意的AJAX框架,或者直接使用未经封装的XmlHttp都是同等适用的。这就要求我们在执行任意一个AJAX回调时,注意利用#标签改变当前页的url地址,那么,当用户刷新页面时,由于url中#后的参数不同,就可以在刷新时通过解析和判断当前的#后的参数来获得“可刷新的无刷新”效果。

作者:Teddy
原文出处:
http://www.cnblogs.com/teddyma/archive/200.../02/267450.html
<!--IBF.ATTACHMENT_11611-->
分享到:
评论

相关推荐

    MUI选项卡下拉刷新上拉加载demo

    HTML结构通常包括`&lt;div class="mui-content"&gt;`作为主要内容区域,内部可能包含多个`&lt;div class="mui-scroll-wrapper"&gt;`,每个都代表一个可滚动的数据列表。`&lt;ul&gt;`元素用于显示加载的数据,`&lt;li&gt;`元素则是列表项。 ...

    fragment+选项卡+刷新

    在Android开发中,"fragment+选项卡+刷新"是一个常见的应用架构模式,它结合了Fragment、TabLayout和SwipeRefreshLayout等组件,以实现丰富的用户界面和交互功能。下面将详细讲解这个主题的相关知识点。 首先,...

    jquery无刷新父级菜单切换

    "jquery无刷新父级菜单切换"是一个常见的需求,它旨在提供一种高效、流畅的用户体验,让用户在浏览网站时无需等待页面完全刷新就能切换不同的父级菜单项。这种技术常用于构建响应式和动态的Web应用,使得菜单的展开...

    无刷新级联菜单

    收到服务器返回的数据后,Jquery会更新下一级菜单的内容,展示新的可选项,这样就实现了无刷新级联菜单的效果。 总的来说,无刷新级联菜单通过Ajax技术实现实时数据交换,结合Jquery进行前端交互处理,提供了一个...

    spinner,list数据刷新

    ActionBar是Android应用顶部的导航栏,通常包含应用的Logo、标题和一个选项菜单。自定义ActionBar可以通过设置主题、添加自定义视图或使用Toolbar组件来实现。Toolbar作为ActionBar的替代品,具有更高的可定制性,...

    JQUERY轻松实现talble无刷新排序

    总结来说,jQuery TableSorter是一个强大的工具,可以帮助开发者轻松实现表格无刷新排序,提升网页应用的交互体验。通过理解其基本使用和自定义配置,我们可以构建更加灵活和用户友好的数据展示平台。

    ajax无刷新内容tabs标签切换

    这种技术通常用于构建诸如导航菜单、选项卡式界面等元素,让用户能够快速浏览和操作大量信息。 Ajax(Asynchronous JavaScript and XML)是一种在无需刷新整个页面的情况下,能够更新部分网页的技术。通过使用Ajax...

    C#无刷新联动下拉框

    在IT领域,尤其是在Web开发中,"C#无刷新联动下拉框"是一个常见的需求,主要目的是提升用户体验,使得用户在选择某个下拉框选项时,相关联的下拉框能够即时更新,而无需整个页面刷新。这个技术通常应用于多级分类...

    Ajax全新教程2 无刷新页面 无刷新数据更新 无刷新绑定 asp.net全新Ajax教程2

    无刷新数据更新是Ajax的另一个关键特性。在传统的Web应用中,每当有新的数据需要显示时,都需要刷新整个页面。但通过Ajax,我们可以向服务器发送异步请求,获取最新数据,然后动态地将这些数据插入到页面的特定位置...

    DropDownList年月二级联动无刷新

    本示例中的"DropDownList年月二级联动无刷新"技术,是实现一个高效的用户界面交互功能,即在选择年份时,月份的下拉列表会即时更新,而无需整个页面重新加载,极大地提升了用户体验。 首先,我们要理解“二级联动”...

    纯js实现ajax无刷新三级联动

    对于三级联动,通常指的是三个下拉列表框,其中每个列表的选择会影响到下一个列表的选项。例如,第一个列表选择省份,第二个列表则根据省份加载城市,第三个列表则基于城市加载区县。这种功能的实现需要在JavaScript...

    jquery+ajax无刷新评论源码(包含无刷新分页)

    实现了获取评论无刷新,发表评论无刷新,www.sendawangluo.com页面获取评论时显示loading加载效果jquery真的是一个非常优秀的JS库,简单容易掌握,对于网页中的多级菜单、级联效果、Tab选项卡切换、图片轮转显示,...

    页面刷新 定时刷新 设置刷新

    定时刷新,又称为自动刷新,允许用户设置一个特定的时间间隔,网页将在该间隔后自动重新加载。这种功能通常通过HTML的`&lt;meta&gt;`标签或者JavaScript实现。例如,我们可以使用以下HTML代码来设置页面在5秒后自动刷新: ...

    android activity选项卡 listview 下拉刷新 仿新浪微博

    SwipeRefreshLayout包裹一个可滚动的视图,如ListView,当用户下拉时,会触发刷新事件。 - 实现下拉刷新需要监听手势事件,更新UI状态,并与后台数据源同步,确保数据加载的正确性和实时性。 4. **新浪微博UI设计*...

    Asp.Net无刷新三级联动

    在Asp.Net开发中,"无刷新三级联动"是一种提高用户体验的技术,它允许用户在选择一个选项时,其他相关的下拉列表或区域会自动更新,而无需整个页面重新加载。这种技术常见于如地区选择、商品分类等场景,能够极大地...

    js+php无刷新上传

    "js+php无刷新上传"是一个技术主题,主要涉及使用JavaScript(具体为jQuery库)和PHP实现文件的无刷新上传。在传统的文件上传方式中,用户通常需要提交整个表单,页面会刷新以显示上传结果。而无刷新上传,即AJAX...

    网页自动刷新插件

    网页自动刷新插件是互联网浏览过程中非常实用的一种工具,它能够帮助用户自动定时地刷新页面,无需手动操作。这样的插件对于那些需要实时监控数据变化、关注最新动态或者跟踪在线拍卖等场合尤其有用。在本篇文章中,...

    jQuery无刷新验证

    在Web开发中,用户体验是一个至关重要的因素,无刷新验证就是提升用户体验的一种技术。jQuery,作为一款轻量级、高性能的JavaScript库,提供了丰富的API和插件,使得实现无刷新验证变得非常简单。本教程将深入探讨...

    Android应用源码 ListView下拉刷新 Demo.zip

    本示例"Android应用源码 ListView下拉刷新 Demo.zip"是一个专门探讨ListView下拉刷新功能的实践项目,适用于开发者参考和学习。下拉刷新是现代移动应用中常见的一种交互设计,允许用户通过在列表顶部向下拉动来获取...

    ASP源码—简便无刷新 ASP 文件上传系统.zip

    在本案例中,“ASP源码—简便无刷新 ASP 文件上传系统.zip”是一个包含ASP源代码的压缩包,旨在实现一个无需页面刷新的文件上传功能。这种功能在Web应用程序中非常常见,比如用户在网站上提交表单时上传图片或文档。...

Global site tag (gtag.js) - Google Analytics