我有一些jQuery在用户执行操作后修改页面上的元素。这些都是持久的服务器端,所以它对用户来说都很好看并且流畅。
当用户点击异地,然后点击后退按钮时,除Opera之外的所有浏览器都会重新请求页面,因此用户仍会看到更改。然而,对于Opera,该站点返回到它的Jquery之前的状态(因为它没有从服务器请求该页面)。
我可以做一些令人讨厌的事情,例如检查浏览器并刷新Opera,但显然这不太理想。
有什么想法可以解决这个问题吗?
答案 0 :(得分:0)
您是否可以使用某些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/)
答案 1 :(得分:0)
没有人回答我自己的问题,但似乎以下问题解决了我的问题:
history.navigationMode = 'fast';
设置这意味着页面将以您离开页面时所处的确切状态加载,这基本上就是我所寻找的。它似乎只是一个Opera设置,虽然它似乎只是Opera的行为不同。
我找到了信息here。
答案 2 :(得分:0)
Opera有一些启发式方法来确定页面是否需要在历史导航中“重新初始化”。启发式方法包括页面是否正在侦听卸载事件(因为我们无法“撤消”卸载事件所做的任何操作),以及导致导航的代码是否从单击事件中运行(因为脚本经常禁用按钮并且不容易翻转更改页面的状态)。如果你可以避免触发启发式(Keep It Simple),即使没有history.navigationMode hack,问题也应该消失。