浏览器刷新后,IE表单输入数据消失

时间:2010-06-14 22:57:36

标签: html caching input internet-explorer refresh

我正在尝试在没有PHP的情况下实现粘性表单。我的设置是像JavaScript一样的AJAX。 IE和FF上的后退/前进工作正常,但刷新仅适用于FF,而不适用于IE。无论我使用什么缓存选项,我甚至设置IE的临时文件选项永远不检查更新,页面刷新后输入值消失(刷新按钮或F5)

我已经阅读了许多人们遇到相反问题的帖子,并且不希望表单数据在页面刷新过程中持续存在,也从不从浏览器缓存中读取,但我确实这样做了。

感谢任何帮助,谢谢!

PS。像HTML - input value kept after Refresh这样的帖子正好与我的问题相反

2 个答案:

答案 0 :(得分:5)

IE / Chrome / Safari / Opera /等具有预期的行为。

我认为当你点击刷新时,FF实际上并没有刷新字段。

毕竟,刷新的目的是转储您拥有的内容并从服务器重新加载。对于Firefox,然后将任何已更改的信息/字段合并回表单是意外行为,恕我直言,设计不好。

另请注意,这个问题已经在Mozilla for 10 years进行了争论。它是许多重复错误报告的来源,被许多人认为是一个严重的失败,并且坦率地说是一个完整的PITA。我不知道有多少次我必须向非技术人员解释为什么 Firefox 重新加载按钮没有重新加载页面。

最近我告诉他们Firefox重新加载按钮已损坏,他们必须按住Shift键点击刷新或使用其他浏览器。谢天谢地,我们有选择。

---由于评论说明因F5和Ctrl-F5是什么而引起混淆而更新 -
所有浏览器(Firefox除外)都将F5视为“重新加载”。这意味着如果禁用缓存,则从缓存或服务器重新加载页面。 Firefox确实进行了重新加载,但它也会重新填充你输入的东西的任何方框......只要这些字段仍然存在。恕我直言,这是一个不好的行为,因为一个页面可能已经改变,你最终处于一个非常无效的状态,其中一些东西填写而其他东西没有。

要清楚,缓存不包含您在页面中输入的内容;缓存只包含服务器发送给您的内容。因此,Firefox本身会尝试合并以前输入和未提交的数据。同样,没有其他浏览器这样做,这是一个很混乱的来源。

所有浏览器(包括Firefox)都将Ctrl F5视为“从服务器重新加载”。这会忽略您缓存的任何文件(图像,CSS,JavaScript等),并从服务器中提取全新文件。值得庆幸的是,当您执行Ctrl-F5时,Firefox不会将未提交的数据合并回页面。

答案 1 :(得分:0)

即使我同意克里斯,这会有任何帮助吗?

http://snipplr.com/view/799/get-url-variables/

它允许您将内容存储在URL中(如phps GET)并使用javascript访问它们