这个问题类似于
Track when user hits back button on the browser,但不一样…我有一个解决方案,并将其发布在这里供参考和反馈。如果任何人有任何更好的选择,我都耳朵!
情况是,我有一个页面,“in place edit”,一个flickr。也就是说有一个“点击这里添加一个描述”DIV,当点击变成TEXTAREA与保存和取消按钮。单击保存将数据发布到服务器以更新数据库,并将新描述放在DIV中,而不是TEXTAREA。如果页面被刷新,则使用“点击编辑”选项从数据库显示新的描述。相当标准的web 2.0东西这些天。
问题是如果:
>页面加载时没有说明
>用户添加描述
>通过单击链接导航页面
>用户单击后退按钮
然后,显示的(从浏览器的缓存)是没有动态修改DIV的页面的版本,包含新的描述。
使用隐藏表单。当您重新载入或按下返回按钮返回页面时,表单数据将保留(通常)在浏览器中。以下内容会出现在您的网页(可能位于底部):
<form name="ignore_me"> <input type="hidden" id="page_is_dirty" name="page_is_dirty" value="0" /> </form>
在您的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'; }
侦听表单的js必须在html完全解析之后执行,但是如果用户延迟是一个严重的问题,你可以将表单和js同时放在页面顶部(js秒)。