Opera浏览器后退按钮缓存功能

5
我有一些jQuery代码,在用户执行某些操作后修改页面上的元素。这些更改在服务器端被持久化,因此对于用户来说所有东西看起来都很流畅。
当用户离开网站并点击“返回”按钮时,除了Opera浏览器之外的所有浏览器都会重新请求页面,因此更改仍然对用户可见。然而,对于Opera浏览器,网站返回到它的Jquery之前的状态(因为它没有从服务器请求页面)。
我可以做一些不好的事情,比如检查浏览器并刷新Opera浏览器,但显然这不是理想的解决方法。
有没有更好的方法来解决这个问题?

酷!作为 Opera 用户,很高兴看到网页开发者考虑到了它 :) - alf
3个回答

0

我是不太喜欢自己回答问题的,但是看起来下面的方法解决了我的问题:

history.navigationMode = 'fast';

设置这个选项意味着页面将以你离开时的确切状态加载,这基本上就是我想要的。它似乎只是 Opera 的一个设置,尽管它似乎只有 Opera 表现得与众不同。

我在这里找到了相关信息。


0

你可以使用HTML5本地存储来在客户端保留这些更改(对于那些具有HTML5兼容浏览器的用户),并对那些没有的用户优雅地降级到服务器请求。

经过快速搜索,似乎Opera从2010年初的Opera 10.5开始支持LocalStorage,我认为它也会自动更新,所以大多数使用Opera的2.7%的用户应该具备此功能。

我建议使用http://www.modernizr.com/检查功能的存在,并将结果存储在对象文字JSON中,然后将其存储到本地存储中(这样可以使存储和检索更加容易!)

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


0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接