这个问题类似于用户在浏览器上点击按钮时的跟踪,但不一样......我有一个解决方案,并将其发布在此处以供参考和反馈.如果有人有更好的选择,我全都耳朵!
情况是我有一个"就地编辑"的页面,一个la flickr.即有一个"点击这里添加描述"DIV,点击时变成带有保存和取消按钮的TEXTAREA.单击"保存"将数据发布到服务器以更新数据库,并将新描述放在DIV中以代替TEXTAREA.如果刷新页面,则会使用"单击以编辑"选项从数据库中显示新描述.这些天相当标准的Web 2.0.
问题是,如果:
页面加载时没有描述
用户添加了描述
通过单击链接导航页面
用户单击后退按钮
然后显示的内容(来自浏览器的缓存)是没有包含新描述的动态修改的DIV的页面版本.
这是一个相当大的问题,因为用户认为他们的更新已丢失,并且不一定了解他们需要刷新页面才能看到更改.
因此,问题是:如何将页面标记为在加载后进行修改,然后检测用户何时"返回"并在该情况下强制刷新?
使用隐藏的表格.当您重新加载或点击后退按钮返回页面时,表单数据(通常)会保留在浏览器中.以下内容位于您的页面中(可能位于底部附近):
在您的JavaScript中,您需要以下内容:
var dirty_bit = document.getElementById('page_is_dirty'); if (dirty_bit.value == '1') window.location.reload(); function mark_page_dirty() { dirty_bit.value = '1'; }
在完全解析html之后,必须执行嗅探表单的js,但如果用户延迟是一个严重问题,您可以将表单和js内联在页面顶部(js秒).
对于这个老问题,这是一个非常简单的现代解决方案.
if (window.performance && window.performance.navigation.type == window.performance.navigation.TYPE_BACK_FORWARD) { alert('Got here using the browser "Back" or "Forward" button.'); }
window.performance目前支持所有主流浏览器.
这篇文章解释了它.请参阅以下代码:http: //www.webkit.org/blog/516/webkit-page-cache-ii-the-unload-event/
Click for WebKit