我有一个公司Wiki由MediaWiki提供支持。我已经编写了代码来添加页面锁定功能,这样当用户编辑页面时,他们会在页面上获得15分钟的锁定时间,可以在任何时间到期之前对其进行更新。通过浏览器后退按钮访问表单不会触发“确认表单重新提交”
如果用户编辑页面,然后单击保存,然后单击浏览器的后退按钮返回到编辑窗体,一切看起来很正常,用户认为一切正常,但这里是踢球者:它不在页面上创建一个新的锁。该消息告诉用户在页面上有一个锁,但我认为这只是因为它的缓存版本的页面;消息中的到期时间是从开始的第一个编辑的时间,而不是使用后退按钮的过期时间。
我曾尝试加入HTML标签meta
到页面head
标签内部缓存失效/不缓存编辑页面,但是这并不工作,因为MediaWiki的PHP页面生成覆盖此。
现在我有一个非常草率的修复;我使用JavaScript来模拟按下浏览器前进按钮,例如在编辑页面上向前移动历史记录。如果一个较新的历史项目不存在(例如,他们点击了实际的“编辑”按钮而不是使用浏览器后退按钮),它只是不做任何事情,但如果他们通过后退按钮访问编辑页面,它会简要显示大约一秒钟,直到JavaScript加载,然后在历史记录中向前重定向(将它们放回到之前的位置,然后再按下后退按钮)。是的,这是有效的,但在我看来,这是一个非常糟糕的解决方案,因为它不是非常无缝/用户友好的,可能会让用户感到困惑,或使他们认为浏览器出现问题。
更好的解决方案是强制用户重新提交表单,从而打开编辑页面的“新鲜”版本,但我不确定它为什么还没有这样做。我的意思是,当用户通过浏览器后退按钮访问编辑页面时,我希望它显示“确认表单重新提交”错误页面。谷歌浏览器,例如:
我认为这将迫使形式的重新提交,我相信随后将创建一个实际页锁解决这个问题。纠正我,如果我错了。
我不认为太多的页面锁定代码是非常相关的,因为问题的原因只是后退按钮将它们带到缓存版本的页面而不是“新鲜”版本,但如果您认为不然,请随时索要。只要让我知道要发布的代码的哪些部分,我会添加它们。
发布后,对同一页面使用重定向。 – devpro
um。什么?你能澄清你的意思吗? –