Chrome / Safari中的后退按钮错误

时间:2011-01-28 18:33:49

标签: javascript jquery google-chrome safari back

我一直在尝试找到Safari / Chrome中后退按钮错误的解决方法(浏览器将伪造数据放在他们不属于的字段中)。我没有运气,似乎现在应该有一个很好的解决方案(我看到有关这个的帖子可以追溯到2009年,但没有好的解决方案)。

在此示例中:http://jsfiddle.net/eGutT/13/

你可以看到初始页面加载时一切正常。但是,在单击链接,然后单击浏览器上的后退按钮后,值将传播到错误的字段。请使用Safari或Chrome进行测试。它适用于Firefox。

这是一个非常严重的问题,尤其是在以下情况下:

  1. 用户点击后退按钮,发生此错误
  2. 用户未注意到虚假数据
  3. 用户对表单进行了一些不相关的更改(在不同的不受影响的字段中)
  4. 用户提交表单

现在您处于将伪造数据提交到数据库的情况!!

顺便说一下,这个问题可能与jQuery有关,因为如果你在示例中取消注释这一行:

updateRowNums();  // IF YOU COMMENT OUT THIS LINE...

没有引入额外/伪造数据。

谢谢, 盖伦

1 个答案:

答案 0 :(得分:0)

你在谈论0,1和2吗?因为您的函数updateRowNums会自动强制执行这些值。如果您想维护第一列,可以将updateRowNums更改为以下内容:

if (!$('#some_id').val()) { $('#some_id').val(x); }

(显然它不是最有效的代码,但如果没有值,它会重置字段。)

但是,如果不是你正在谈论的内容,那么我无法重现你的问题。我正在使用Chrome 9.0.597.83,它在所有正确的位置保存了所有正确的数据。