日期:2014-05-16  浏览次数:20368 次

关于浏览器后退前进对表单控件值的控制
这个问题不知道大家都了解不了解,请大虾帮忙解答下。

之前做过一个表单控件用js插件模拟美化的东西,就是用div生成控件的样子,模拟控件行为。但没注意过原生的表单控件在浏览器前进后退时是如何工作的,所以做着很烦恼。
今天发现了个问题,比如我在1页面输入框里输入文字,改变url到2页面,这时清空浏览器缓存,再后退到1页面发现输入框的值还存在,同事说浏览器就是这样工作的。我有两个疑问:1.如何工作的,如果是原来页面上没有输入框,通过用户操作借助js添加的输入框,能否在用户后退时,js生成输入框并显示之前用户输入的值?2.其他的表单控件没研究过,比如select,radio,checkbox,这个是不是要了解些html的文档,有没有相关的学习资料能介绍下。

先谢过。
html 浏览器 交互 ajax

------解决方案--------------------
清空缓存时包括COOKIE了吗?以前很多页面都是通过COOKIE来保留和提取值的。

现在的浏览器大多是通过系统设置里有一项是否保留控件值的设置来决定的,所以有专门的表单数据管理区,包括密码口令等信息。对于JS临时创建的控件,因为每次都是崭新创建的,所以不会为其保留值的。

不过这个问题一般可以不用太考虑,用户如果清空COOKIE,自然就应该是这个结果。比如你设计一个业务管理系统时,还能通过程序来防止电脑意外掉电吗?
------解决方案--------------------
浏览器保存表单元素输入值的功能与缓存无关
动态生成的输入框无法享受这个功能,因为页面加载时它不存在

该功能不属于标准内容,是浏览器提供的优化功能,所以不能保证兼容性
你可以用cookie保存原来的输入值,进入页面时从cookie中读取出来,用js赋值给对应标签