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

从零构建:基于Docker与FRR的OSPF虚拟网络实验室 本文详细介绍了如何利用Docker与FRR构建OSPF虚拟网络实验室,从环境设计到高级网络拓扑配置,再到实验验证与排错。通过容器化技术实现高效资源利用和快速部署,特别适合网络协议教学、企业网络架构验证等场景。 阅读详情
来自: 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,看看简单的效果。
CODE
<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>

如果href中指定的“#”后的内name在指定页中没有定义,浏览器则简单的定位到指定页的页首。除了以一个链接的形式来调转之外,也可以通过修改document.location = ‘test.html#top’ 这样的方式来重订向。凡是这样跳转的页面,因为实际上还是在当前页面内,因此,网页是不会有物理刷新的。OK,这就是我们实现“可刷新的无刷新应用”的方案。

模式

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

作者:Teddy
原文出处:
http://www.cnblogs.com/teddyma/archive/200.../02/267450.html
 
Cadence OrCAD Capture 保持元器件编号情况复制元件,复制后元器件编号与复制前不同的问题解决 如下图所示复制时,已经勾选了“Preserve reference on copy”但是复制后的编号却与复制前不一样。本文简单介绍其原因及解决方法。 阅读详情

相关推荐

DBeaver连接IoTDB避坑指南:手动配置JDBC驱动的完整流程(附问题排查)

本文提供了在DBeaver中手动配置Apache IoTDB JDBC驱动的完整流程与避坑指南。详细解析了从驱动创建、库文件添加(关键是指向整个lib目录)到连接测试的每一步,并重点针对常见的ClassNotFoundException、连接拒绝等错误提供了深度排查方案,帮助用户高效建立图形化管理连接。

weixin_28327051的博客 394

Android中刷新界面的二种方法

利用Handler刷新界面 实例化一个Handler对象,并重写handleMessage方法调用invalidate()实现界面刷新;而在线程中通过sendMessage发送界面更新消息。 代码如下: // 在onCreate()中开启线程 new Thread(new GameThread()).start(); // 实例化一个handler Handler myHand

陈志宝‑天津|Android&Java 全栈开发工程师 1万+

R语言pls包实战:手把手教你用偏最小二乘(PLS)搞定高维数据回归(附完整代码与数据标准化避坑指南)

本文详细介绍了如何使用R语言的pls包进行偏最小二乘(PLS)回归分析,特别针对高维数据回归问题。通过完整的代码示例和数据标准化避坑指南,帮助读者掌握从数据预处理到模型优化的全流程,解决实际应用中的常见问题。

weixin_42662605的博客 350

gulp自动化构建工具gulp-connect插件配置服务器实现热更新+自动刷新

var gulp = require("gulp"), sass = require("gulp-sass"), cssmin = require("gulp-clean-css"), rename = require("gulp-rename"), connect = require("gulp-connect"); gulp.task("sass-min-rename", f

luck_lin 8044

LPDDR5 学习笔记05:WCK操作详解

LPDDR5 SDRAM采用双时钟设计,写时钟(WCK)频率为命令时钟(CK)的2倍或4倍,需要通过WCK2CK同步机制解决时钟域对齐问题。该同步操作由带特殊标志位的CAS命令触发,控制器需提供半频WCK脉冲进行状态校准。同步完成后才能执行读写操作,且支持多存储体组同步和WCK常开模式以优化性能。掉电后必须重新执行同步流程,确保时钟域正确对齐。该机制有效解决了高速内存接口的时序挑战,为LPDDR5性能提升提供关键技术支撑。

一只豌豆象的博客 2003

Vue2 - 详细实现网页 “开启录音并生成音频文件,上传到服务器效果“,浏览器录制外部音频调用麦克风并传到后端,兼容全部浏览器、支持 PC 网页或手机 H5 网页、可本地播放试听(详细示例运行代码)

vue,nuxt,uniapp,网页网站,麦克风,网页录音,MediaRecorder,浏览器录音,移动端h5网页,手机端录音,web网页录音,recorder-core官方文档,Recorder,非https怎么本地录音,录音报错失败,录音后怎么播放音频,如何获取录音mp3文件,解决一直不提示麦克风权限,小白详细教程,实时录音,调用浏览器麦克风录音,浏览器不兼容,wav,mp3,vue怎么实现网页录音呢,vue2网页录音并上传到服务器,web如何实现录制音频,vue网页录音,音频录制播放和上传服务器,vu

🏆 前端领域优质创作者 6003

Java同步、异步相关知识点

Java同步、异步相关知识点 一、关键字: thread(线程)、thread-safe(线程安全)、intercurrent(并发的) synchronized(同步的)、asynchronized(异步的)、 volatile(易变的)、atomic(原子的)、sha

456

【Android面试八股文】Android Application为什么是单例?

这道题相对简单,就是考察大家是否了解application的创建流程。的实例,它用来存储和处理整个全局变量的一些事情,它同时还是一个。为空的时候,才会创建,从而保证了它是一个单例对象。一样有自己的生命周期,但是它并没有那么复杂,因为。对象的创建过程,找出它为什么是单例的原因。全局进行一些配置,比如配置插件。的时候才会创建,所以说可以在。凭什么是单例,我们查看下。启动的时候都会创建一个。是怎么一步步创建的。是一个单例,即每一个。

字节卷动 531

[转]Java同步、异步相关知识点

http://sakyone.iteye.com/blog/515592 Java同步、异步相关知识点 关键字: java同步、异步相关知识点 一、关键字: thread(线程)、thread-safe(线程安全)、intercurrent(并发的) synchronized(同步的)、asynchronized(异步的)、 volatile(易变的)、atomic...

Yanger 155

配置 SAP ABAP Secure Storage

系统在进行数据加密时,会将数据与当前 Key ID 进行关联,也就是说,如果此时使用的是 Key ID 4713,则该条数据会在 Encrypt.Data 字段存储一个由密钥 4713 加密后的密文。Key ID 代表了不同的密钥标识,Current Key 表示系统当前正在使用的主密钥,Value 则是对应密钥的存储值,Management Data 通常包括一些管理性或辅助性的信息,用于描述密钥的状态、过期时间或者其他属性。对于每一条被加密的业务数据,系统会记录它使用了哪一条 Key ID。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 565

【漏洞复现】WordPress Plugin NotificationX 存在sql注入CVE-2024-1698

技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社会公德,不得利用网络从事危害国家安全、荣誉和利益,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。WordPress和WordPress plugin都是WordPress基金会的产品。WordPress Plugin NotificationX 存在安全漏洞,该漏洞源于对用户提供的参数转义不充分以及对现有 SQL 查询缺乏充分的准备,很容易通过“type”参数受到 SQL 注入攻击。

失心少年 1382

Java多线程-同步、异步相关知识点

Java同步、异步相关知识点 一、关键字: thread(线程)、thread-safe(线程安全)、intercurrent(并发的) synchronized(同步的)、asynchronized(异步的)、 volatile(易变的)、atomic(原子的)、share(共享) 二、总结背景: 一次读写共享文件编写,嚯,好家伙,竟然揪出这些零碎而又是一路的知识点。于是乎,Goog...

穿越在未来的专栏 459

车载以太网:PHY(物理层)介绍

本文以TJA1101芯片为实例介绍了车载以太网PHY(物理层)组成。

kevin1499的博客 6231

Java同步,异步相关知识点(1)

Java同步、异步相关知识点   一、关键字:   thread(线程)、thread-safe(线程安全)、intercurrent(并发的)   synchronized(同步的)、asynchronized(异步的)、   volatile(

473

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

[转载]Java同步、异步相关知识点

原文地址:http://blog.youkuaiyun.com/LoveJavaYDJ/article/details/4645439 Java同步、异步相关知识点 一、关键字: thread(线程)、thread-safe(线程安全)、intercurrent(并发的) synchronized(同步的)、asynchronized(异步的)、 volatile(易变的)、atomic(...

weixin_30649641的博客 75

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

上一篇: 创建Web自定义控件
下一篇: 弹出窗口代码大全
SmartJavaer
博客等级 码龄21年 13粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值