【问题标题】:Opera back-button cache functionalityOpera 后退按钮缓存功能
【发布时间】:2011-10-10 14:36:24
【问题描述】:

我有一些 jQuery,它会在用户执行操作后修改页面上的元素。这些是持久的服务器端,因此对于用户来说一切看起来都很流畅。

当用户点击站外然后点击后退按钮时,除 Opera 之外的所有浏览器都会重新请求该页面,因此更改仍会显示给用户。但是,使用 Opera,站点会返回到 Jquery 之前的状态(因为它没有从服务器请求页面)。

可以做一些讨厌的事情,比如检查浏览器并刷新 Opera,但显然这并不理想。

有什么更好的方法来解决这个问题吗?

【问题讨论】:

  • 酷!作为 Opera 用户,很高兴看到 Web 开发人员考虑它:)

标签: c# jquery asp.net opera mvp


【解决方案1】:

您是否可以使用一些 HTML5 本地存储来保存这些更改客户端(对于那些拥有 HTML5 兼容浏览器的用户)并优雅地降级为那些不兼容的服务器请求。

快速浏览后 - Opera 似乎在 Opera 10.5 中开始支持 LocalStorage(早在 2010 年初),我认为它也会自动更新,因此使用 Opera 的 2.7% 用户中的大多数应该具有此功能。

我建议使用http://www.modernizr.com/ 来检查功能的存在,然后也许将结果存储在 Object Literal JSON 中,并将结果存储到本地存储中(应该使存储和检索更容易!)

(HTML5 本地存储指南 - http://php-html.net/tutorials/html5-local-storage-guide/

【讨论】:

    【解决方案2】:

    没有人回答我自己的问题,但似乎以下解决了我的问题:

    history.navigationMode = 'fast';
    

    设置此项意味着页面将以您离开页面时的确切状态加载,这基本上是我所寻找的。它似乎是一个只有 Opera 的设置,尽管它似乎只有 Opera 的行为不同。

    我找到了here的信息。

    【讨论】:

      【解决方案3】:

      Opera 有一些启发式方法来确定页面是否需要“重新初始化”历史导航。启发式包括页面是否正在监听卸载事件(因为我们无法“撤消”卸载事件所做的任何事情),以及导致导航的代码是否从点击事件运行(因为脚本经常禁用按钮并且不容易恢复页面状态的变化)。如果您可以避免触发启发式方法(保持简单),即使没有 history.navigationMode hack,问题也应该会消失。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-13
        • 1970-01-01
        • 2012-05-14
        • 1970-01-01
        相关资源
        最近更新 更多