我一直在努力寻找解决 Safari/Chrome 中后退按钮错误的方法(浏览器将虚假数据放在它们不属于的字段中)。我运气不好,现在似乎应该有一个很好的解决方案(我看到关于这个的帖子可以追溯到 2009 年,但没有好的解决方案)。
在这个例子中:http://jsfiddle.net/eGutT/13/
您可以看到初始页面加载时一切正常。但是,单击链接后,单击浏览器上的后退按钮,值将传播到错误的字段。请使用 Safari 或 Chrome 进行测试。它在 Firefox 上运行良好。
这是一个非常严重的问题,尤其是在:
- 用户点击后退按钮,出现此错误
- 用户没有注意到虚假数据
- 用户对表单进行了一些不相关的更改(在不同的未受影响的字段中)
- 用户提交表单
现在您面临着将虚假数据提交到数据库的情况!!
顺便说一句,这个问题可能与 jQuery 有关,因为如果您取消注释示例中的这一行:
updateRowNums(); // IF YOU COMMENT OUT THIS LINE...
没有引入额外/伪造的数据。
谢谢, 盖伦
最佳答案
您是在谈论 0、1 和 2 吗?因为您的函数 updateRowNums
会自动强制这些值。如果您想维护第一列,您可以将 updateRowNums
更改为如下所示:
if (!$('#some_id').val()) { $('#some_id').val(x); }
(显然这不是最有效的代码,但如果不存在任何值,它会重置该字段。)
但是,如果不是您所说的,那么我无法重现您的问题。我使用的是 Chrome 9.0.597.83,它在所有正确的位置保存了所有正确的数据。
关于javascript - Chrome/Safari 中的后退按钮错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4831785/