firefox在处理多个(重复)帖子方面与ie究竟有何不同?



我在Firefox中遇到了一个bug,在修改了一些表单数据后(通过AJAX)使用重新加载按钮时,我的表单上出现了一些不同步的信息。

在IE(7)中,刷新似乎总是重新提交原来提交的数据。所以,如果我加载一个表单,然后通过JS/AJAX修改和刷新,我看到的是我第一次加载时看到的。

在Firefox(4)中,我倾向于(至少在这种情况下)查看较新的数据。然而,由于我忽略了更新某些表单元素,表单似乎重新提交了部分不正确的数据,在这种情况下可能会带来严重的混乱。

我的问题是,Firefox和IE处理转发的方式到底有什么不同?有文档记录吗?哪一种方式更标准?其他浏览器呢?

Edit:可能值得注意的是,Firefox似乎也只重新呈现某些元素(在我的例子中,标签的类改变了,但输入的禁用状态没有改变)。Firefox在刷新和重新发布时如何更新DOM有特殊的规则吗?

我检查了FF中(re)POST的返回,并确认它有一些不寻常的行为。在返回的源中,我得到了这一点:

<label id="delSheetContainer"
      title="Estimate Sheets with Schedule Activities in the past may not be deleted."
      class="">
   <input id="delSheet" name="delSheet"
      type="checkbox"
      tabindex="3"
      value="false"
      //Inserted note: this is where the disabled value would have been
      onclick="this.value=(this.value && 1); bSave=true; setBtn(this.checked);"
   />Delete Sheet
</label>

但是在浏览器(和Firebug)中,我看到一个仍然禁用的复选框。然而,标签已经适当地更新了。有人能详细描述一下这种行为吗?(引用感激!)

Edit:正如Boris所解释的,Firefox在刷新时保持"表单状态"。我的问题实际上是由这个事实引起的;服务器正在返回正确的内容,但是Firefox仍然保持表单状态。

根据描述很难确定您在这里看到的是哪种效果,但是当您进行重新加载(而不是强制重新加载)时,Firefox会将修改后的表单输入值保持在重新加载之前的值

如果你的页面有这样的标记:

<input name="x">

和用户在文本框中输入"foo"然后重新加载,重新加载后的输入仍然包含字符串"foo"。

这也适用于通过JavaScript修改值的隐藏输入,这可能很好地解释了您观察到的行为。

没有标准的重载行为,真的

最新更新