【问题标题】:Safari and Chrome modifying form data on back buttonSafari 和 Chrome 修改后退按钮上的表单数据
【发布时间】:2010-11-18 22:59:16
【问题描述】:

我在 Safari 和 Chrome 中遇到了这个奇怪的问题(适用于 Firefox 和 IE)。

  1. 我从这个复选框列表开始,其中第一项“A”已选中,而“B”和“C”项未选中
  2. 然后我导航到另一个页面,该页面对复选框列表中出现的项目进行排序
  3. 我更改了列表中项目的顺序,使其变为“B”、“A”、“C”
  4. 我按下返回键
  5. 从服务器重新获取页面(我已禁用缓存),我检查从服务器发送的响应,仍然检查项目“A”,不再是列表中的第一项。
  6. !!!奇怪的行为!!!页面已以新顺序“B”、“A”、“C”加载到浏览器中,但未选中“A”,而是选中了第一项“B”。

不知何故,检查项的位置似乎已通过按后退按钮恢复,并且从服务器发送的表单数据已被丢弃。

当我刷新页面时,顺序是“B”、“A”、“C”,现在检查了“A”项,一切正常。

在这两种情况下,页面都将 IsPostBack 设置为 false。

这是网络工具包中的错误吗?

试过了,清除缓存,进入隐私浏览模式,清除历史记录。仍然是相同的行为。

【问题讨论】:

  • 我猜这不应该被标记为 C#。

标签: c# safari google-chrome back-button


【解决方案1】:

我们遇到了类似的问题,即 Webkit 正在“恢复”表单数据,即使页面状态同时发生了变化。

类似的帖子Safari and Chrome back button changes hidden and submit values in forms 给出了一个很好的提示,对我们有用。通过将autocomplete="off" 添加到页面上的所有表单中,我们可以解决这个问题。

【讨论】:

  • 天哪,你救了我的命!我已经敲了两天的头,直到我找到了这个自动完成解决方案!我在页面上有一些搜索表单,它在 Safari 和 Google Chrome 中单击后退按钮时返回厚颜无耻的表单数据。令人惊讶的是,IE 在单击后退按钮时运行良好。再次感谢您。
【解决方案2】:

看这个例子:

http://jsfiddle.net/eGutT/9/

这也发生在我身上。这似乎是一个非常基本的缺陷,因为用例非常简单,而且很可能很常见。我已经在不同项目的两个地方遇到了这个问题。如果禁用会话实际上可以避免此问题,则它不是一个真正的修复,因为大多数客户甚至不会知道或关心此选项。

【讨论】:

    猜你喜欢
    • 2011-01-23
    • 2011-06-17
    • 2013-04-22
    • 1970-01-01
    • 2012-05-14
    • 2014-10-07
    • 1970-01-01
    • 2010-09-06
    • 1970-01-01
    相关资源
    最近更新 更多