这个问题类似于用户点击浏览器上的“后退”按钮时的跟踪,但不同于。。。我有一个解决方案,并张贴在这里作为参考和反馈。如果有谁有更好的选择,我洗耳恭听
情况是,我有一个带有“就地编辑”的页面,一个la flickr。也就是说,有一个“单击此处添加说明”DIV,单击该DIV时,它会变成一个带有保存和取消按钮的文本区域。单击“保存”将数据发布到服务器以更新数据库,并将新的描述放在DIV中,而不是文本区域。如果页面被刷新,新的描述将从数据库中显示,并带有“单击编辑”选项。如今,Web2.0已经相当标准了
问题在于,如果:
- 加载该页时没有说明
- 说明由用户添加
- 通过单击链接,页面将被导航到其他位置
- 用户单击后退按钮
然后(从浏览器的缓存中)显示的是页面的版本,其中没有包含新描述的动态修改的DIV
这是一个相当大的问题,因为用户假设他们的更新已经丢失,并且不一定理解他们需要刷新页面才能看到更改
因此,问题是:如何在页面加载后将其标记为正在修改,然后检测用户何时“返回”并在这种情况下强制刷新
使用隐藏的表单。当您重新加载或单击“上一步”按钮返回页面时,表单数据(通常)会保留在浏览器中。以下内容出现在您的页面中(可能在底部附近):
<;表单名称=“忽略我”>;
<;输入type=“hidden”id=“page\u is\u dirty”name=“page\u is\u dirty”value=“0”/>;
</表格>;
在javascript中,您将需要以下内容:
var dirty\u bit=document.getElementById('page\u is\u dirty');
if(dirty_bit.value='1')window.location.reload();
功能标记\页面\脏(){
脏_位值='1';
}
嗅探表单的js必须在完全解析html后执行,但是如果用户延迟是一个严重问题,您可以将表单和js内联放在页面顶部(js秒)