`
魏祖清
  • 浏览: 180294 次
  • 性别: Icon_minigender_1
  • 来自: 福建
社区版块
存档分类
最新评论

不同浏览器处理后退的一些异同

阅读更多
以前在测试自己写的webim时发现firefox有一个很人性化的特性:在页面上跟别人聊天的时候如果不小心点到了本页打开的链接,只要点一下 Firefox的后退按钮,就会退后到之前的页面,可以接着聊。也就是说在firefox中点击后退,原来页面的状态会还原,包括JS改变的DOM结构也会保持。

我们用下面的代码来测试一些常见的浏览器是怎么处理后退的。测试的浏览器有IE8beta2、Firefox3.0.1、Flock1.2.4(Firefox2.0.0.16内核)、Safari3.1(window版)、Opera9.60。
<a href="http://www.baidu.com">百度</a>
<div id="a1"></div>
<script type="text/javascript">
  window.onload = function(){
    alert("load");
    var i = 1;
    setInterval(function(){
      document.getElementById("a1").innerHTML = i++;
    },500);
  };
</script>

测试结果:IE8点后退时会触发之前页面的window.onload事件,计数器回到初始状态重新计数;Opera9.6后退时不会触发前一个页面的window.onload事件,但定时器停止运行;其它浏览器后退时都不会触发前一个页面的window.onload事件,定时器会接着之前的状态继续计数。

结论:Firefox、Opera、Safari在这方面都做得比较人性化,完全的保留了页面unload时的状态,估计是直接从内存中读取缓存数据,所以后退速度相当快;其中Opera9.6会导致计数器停止,可能是个bug。IE在后退时则会回到最初状态,之前JS改变的DOM不复存在。

如果想让非IE浏览器退后时也能触发window.onload事件呢?这篇文章提到了解决方案。其实就是在页面是加入:
window.onunload = function(){};

经测试,此方法可行。对于其中的原理,JK给出了如下解释:

    FF/Safari等会努力做得很理想(完完全全的保持上次的unload时的信息),不过,如果他认为用户的代码(典型的是在onunload里)会破坏他的理想计划时,他就退一步,把“后退”当作“后退+reload”。

分享到:
评论

相关推荐

    对各个浏览器做了一个测试,发现了一有趣的现象

    4. **Web API的异同**:例如,XMLHttpRequest在IE与其他浏览器的不同,Web Workers、Web Storage或WebRTC的实现差异。 5. **测试策略**:包括手动测试、自动化测试、使用虚拟机或云测试平台等方法,以及如何编写...

    前端标准在各浏览器中的差异

    - 不同版本的IE浏览器(如IE6、IE7、IE8等)在处理`hasLayout`特性上可能存在显著差异,这对于跨浏览器开发来说是一大挑战。 - 其他浏览器(如Firefox、Chrome、Safari等)遵循W3C的标准规范,但在实现细节上也会...

    TDDOWNLOAD\Perl 与 Python 之间的一些异同

    - **起源**:Perl由Larry Wall于1987年创建,初衷是在UNIX系统上简化报表处理任务。Perl经历了长期的演进,至最新的版本Perl 5.14.1,已成为功能全面的编程语言。 - **特点**:Perl的核心理念是“不只一种方法来做...

    webwork与struts处理上的异同(1) .txt

    ### WebWork与Struts处理上的异同分析 #### 一、引言 随着Web应用的发展,Java企业级应用框架在不断进化与完善之中。其中,Struts与WebWork是两个非常重要的MVC(Model-View-Controller)架构框架,它们在Java Web...

    强悍的文件异同比较工具

    标题中的“强悍的文件异同比较工具”暗示了我们讨论的是一个功能强大的专业工具,它能够高效、准确地分析两个或多个文件的相似之处和不同之处。 文件比较工具的核心功能是对比文件内容,查找文本或二进制数据的差异...

    浅析Oracle和Microsoft SQL Server事务处理的异同.pdf

    在Oracle和SQL Server中,事务处理的基本概念是相似的,但也存在一些差异: 1. 事务的启动和结束: - 在Oracle中,事务是自动开始的,当用户对数据库执行第一个可执行的SQL语句时,事务就启动了。事务通常以提交...

    1、 LMS算法与RLS算法有何异同点? 2、 自适应均衡器可以采用哪些最佳准则

    但是,它们之间也存在一些不同点,如收敛速度、计算量、抗噪声性能等。 四、自适应均衡器的最佳准则 自适应均衡器可以采用多种最佳准则,如最小峰值失真准则和最小均方误差准则。最小峰值失真准则是使干扰的峰值...

    “视同销售”在增值税、所得税及会计处理上的异同.doc

    "视同销售"是税收和会计领域中的一个重要概念,它涉及到增值税、所得税和会计处理的异同。在增值税、所得税和会计准则下,对于某些特定的经济行为,即使没有实际的货币交易,也会被视为销售,从而产生相应的纳税义务...

    易语言取数组内容异同

    在易语言中处理数组是非常常见的操作,而“取数组内容异同”则是数组处理中的一种重要功能,它涉及到比较两个或多个数组之间的元素差异,这对于数据处理、数据比较以及算法实现等方面都有很大的实际应用价值。...

    论C#与Java之异同

    ### 论C#与Java之异同 #### 引言 Dare Obasanjo撰写的这篇详尽且精准的文章——《论C#与Java之异同》首次发布于2001年,随着时间的推移,它已经成为了一个比较这两门语言的权威资料。基于C# 2.0和Java SE 6的新...

    Onload,Onunload和onbeforeunload方法的异同

    在分析`Onunload和onbeforeunload方法的异同.docx`文件时,我们可以期待更深入的讨论,可能包括这两个事件的具体用法、示例代码以及它们在不同浏览器中的行为差异。通过阅读这份文档,开发者可以获取更详尽的信息,...

    单片机C语言与C高级程序设计语言的异同

    - 需要注意的是,位变量有一些限制:不能作为结构体或联合体的成员;不能作为函数参数;不能定义位数组;不能作为自动变量或函数内的静态变量;一个编译模块中位变量的数量不能超过64个;在位操作之后,进位标志的...

    试比较企业债务重组会计与所得税税务处理之异同点.doc

    本文将深入探讨企业债务重组会计与所得税税务处理的异同点,以帮助企业更好地理解并应用这些规则。 首先,债务重组的基本概念是指当企业因财务困难而无法按原定条件履行债务时,债权人和债务人通过协商一致的方式,...

    模拟滤波器和数字滤波器的异同点

    根据处理信号的不同,滤波器可以分为模拟滤波器和数字滤波器两大类。模拟滤波器主要应用于连续时间信号处理,而数字滤波器则用于离散信号处理。本文旨在详细介绍这两种滤波器之间的异同点,帮助读者更好地理解和应用...

    对比两张Excel异同

    为了提高效率和准确性,我们可以利用一些工具和技术来帮助我们。这里介绍的方法是通过转换Excel文件为纯文本格式,然后使用专业的对比工具进行比较,这种方法简单而实用。 首先,我们需要打开要对比的两张Excel表格...

    [异同,税务,行为]混合销售与兼营行为的异同及税务处理探析.docx

    税务处理的具体操作中,混合销售应根据企业主营业务的性质来确定应缴纳的税种,而兼营行为则要求企业对不同业务的收入进行准确的分类和分别核算。对于未能正确分开核算的部分,税务机关有权核定其应纳税额。为了避免...

    概括内容要点,比较材料异同.ppt

    在当今信息迅速发展的时代,阅读并理解文本信息成为了一个至关重要的技能。尤其在学习与工作中,能够准确地概括内容要点以及比较材料之间的...掌握好这两项技能,无疑将在信息处理和知识应用方面为我们提供巨大的帮助。

    c/s与b/s的异同点

    #### C/S与B/S:异同对比 - **数据处理与存储**:在C/S架构中,数据处理与存储功能由客户端和服务器端共同承担,而在B/S架构中,大部分逻辑处理和数据存储集中在服务器端,客户端主要负责呈现和用户交互。 - **安全...

    2分钟读懂Hadoop和Spark的异同.docx

    Hadoop和Apache Spark是两个大数据处理框架,但是它们的目的和使用场景不同。本文将详细解释Hadoop和Spark的异同,帮助读者更好地理解和选择大数据处理工具。 首先,Hadoop是一个分布式数据基础设施,旨在将巨大的...

Global site tag (gtag.js) - Google Analytics