Safari和Chrome修改后退按钮上的表单数据

时间:2009-08-12 13:00:04

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

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

  1. 我从这个复选框列表开始,其中第一个项目“A”已选中,项目“B”和“C”未选中
  2. 然后我导航到另一个页面,该页面命令出现在复选框列表中的项目
  3. 我改变了列表中项目的顺序,现在它变为'B','A','C'
  4. 我按后退按钮
  5. 从服务器重新获取页面(我禁用了缓存),检查从服务器发送的响应,仍检查项目“A”,不再是列表中的第一项。
  6. !!!奇怪的行为!!!页面已在浏览器中加载新订单“B”,“A”,“C”,但未选中“A”,而是检查第一项“B”。
  7. 不知何故,按下后退按钮似乎已恢复了检查项目的位置,并且已丢弃从服务器发送的表单数据。

    当我刷新页面时,订单为'B','A','C'和项目'A'现在已经过检查,一切正常。

    在两种情况下,Page都将IsPostBack设置为false。

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

    尝试,清除缓存,进入隐私浏览模式,清除历史记录。还是一样的行为。

3 个答案:

答案 0 :(得分:4)

我发现Chrome存在同样的问题。在进一步测试时,我发现只有在网站使用会话时才会发生。 每当您按下后退按钮时,它都会删除所有发布数据,而不是重新发布。

我创建了一个测试页面:http://www.duanehutchins.com/formtest.php 如果您键入一些信息并将其发布几次,则可以正常工作。然后按回并重新加载;没有重新发布数据。

如果我禁用会话,它可以正常工作。 我向Chrome报告了这个错误。我们会看看是否有人帮忙。

答案 1 :(得分:4)

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

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

答案 2 :(得分:0)

见这个例子:

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

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