Safari和Chrome后退按钮更改隐藏,并在表单中提交值

时间:2010-03-03 18:25:04

标签: browser webkit

Safari和Chrome都会出现以下问题,因此可能是WebKit问题。

页面A:要求您登录查看的页面,包含一个带有type = submit按钮的表单,其中name = submit,value = a

页面B:其他一些页面

页面C:询问用户登录页面,包含一个带有type = submit按钮的表单,其中name = submit和value = c

用户访问页面A,然后访问页面B.然后空闲和用户的登录会话超时。用户点击后退按钮返回到页面A.浏览器将用户重定向到页面C.

在Safari和Chrome上,当呈现C时,页面C上的表单具有type = submit按钮,name = submit,但值显示为“a”。

如果您在第C页上重新加载,“c”将显示为name = submit按钮的值。

type = hidden input fields出现同样的问题;当用户点击后退按钮时,它们的值也会从其他某种形式更改为其他值。此外,此问题也显示没有重定向,只需提交然后返回。在这种情况下,前一页的隐藏和提交CGI变量的值呈现的值不正确。

到目前为止,我能想到的唯一修复是在页面C加载后使用Javascript重置type = hidden和type = submit变量值,以确保值正确。但这并不干净且普遍适用。

没有WebKit修复此错误,有没有人遇到过更好的解决方法?

感谢。

4 个答案:

答案 0 :(得分:17)

答案 1 :(得分:4)

我不确定,但尝试在所有表单中添加autocomplete ='off'。

<form .... autocomplete = 'off'>

答案 2 :(得分:1)

autocomplete="off"

对我不起作用。我找到了另一种解决方法,可以使用text字段,使用

隐藏这些字段

DIV style="display:none"

并在input_type="text" value="s"代码

中添加DIV个字段

答案 3 :(得分:0)

对此的一种解决方案是在加载文档时重置表单

function ready(fn) {
  if (document.readyState != 'loading'){
    fn();
  } else {
    document.addEventListener('DOMContentLoaded', fn);
  }
}

function resetForm() {
   document.forms["myForm"].reset()
}
ready(resetForm)