2010-06-14 34 views
2

我试图实现没有PHP的粘性窗体。我的设置是像JavaScript一样的AJAX。在IE和FF上后退/前进工作正常,但刷新只适用于FF,而不是IE。无论我使用什么缓存选项,我甚至设置IE的临时文件选项永不检查更新,并且输入值在页面刷新(刷新按钮或F5)后消失了。帖子人们有相反的问题,并且不希望表单数据在整个页面刷新过程中持续存在,也不会从浏览器缓存中读取,但我确实需要。浏览器刷新后IE窗体输入数据消失

任何帮助表示赞赏,谢谢!

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

+0

我也试过 “的行为:网址( '#默认#savehistory')”和自动完成无效 – RWW 2010-06-14 23:02:53

+0

如果此功能非常重要,那么只需编写一个AJAX函数,将表单值转储到服务器上的会话中,然后使用另一个AJAX函数重新填充刷新时的字段。 – 2010-06-15 20:47:45

回答

5

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

我认为这是一个错误,FF单击刷新时实际上并未刷新字段。

毕竟,刷新的目的是从服务器上转储你已经重新加载的东西。对于Firefox然后将任何已更改的信息/字段重新合并到表单中是意想不到的行为,恕我直言,设计不好。

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

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

---更新由于评论指出分不清什么F5和Ctrl-F5是 -
所有的浏览器(Firefox的除外)治疗作为F5 “刷新”。这意味着如果缓存被禁用,则从缓存或从服务器重新加载页面。 Firefox不会重新加载,但它也会重新填充您输入内容的所有框......只要这些字段仍然存在即可。恕我直言,这是不好的行为,因为页面可能已经改变,并且最终处于非常无效的状态,其中一些事物被填充而另一些则没有。

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

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

+0

一个bug?如何获得IE7/8上的错误行为? – RWW 2010-06-14 23:00:32

+0

让他们点击保存,然后刷新它。这将是预期的行为。 – NotMe 2010-06-14 23:03:56

+0

http://stackoverflow.com/questions/1877795/how-to-force-internet-explorer-ie-to-really-reload-the-page 这样的帖子表明IE从缓存中的表单值中读取,尽管这对他们来说是不可取的,但我真的很喜欢这样。 – RWW 2010-06-14 23:09:25

0

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

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

这将允许你存储的东西在URL(如PHPS GET),并用JavaScript访问它们

+0

感谢Chief和Chris,我使用userData来坚持输入值。 – RWW 2010-06-15 22:40:04