`
unbounder
  • 浏览: 171757 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

页面刷新时保留input键入值

阅读更多
一般来说,页面刷新时不保留input键入值的需要比较多,但是也有例外,譬如咱这次就遇上需要保留input键入值。
在firefox这不是问题,ie的刷新机制导致刷新页面时不会从浏览器缓存中读取,所以我们需要解决的问题也集中在ie下。

询问google老师,有以下方法
<meta name="save" content="history">
<style type="text/css">
	input{behavior:url(#default#savehistory)};
 </style>

大致思路是利用行为标签(behavior),在访问页面时默认读取缓存,这里主要是针对ie,firefox默认设置就是如此.
关于behavior标签的使用方法,相见css手册
引用
语法:

behavior : url (url) | url (#objID ) | url (#default#behaviorName)

参数:

url (url) : 使用绝对或相对地址指定DHTML行为组件(.htc)
url (#objID ) : 用二进制实现DHTML行为,#objID为object对象指定的id特性
url (#default#behaviorName) : IE的默认行为。由behaviorName指定

说明:

设置或检索对象的DHTML行为。
多个行为之间用空格隔开。
关于DHTML行为,请参阅我所编写的其他教程。
对应的脚本特性为behavior。请参阅我编写的其他书目。

示例:

div { behavior: url(fly.htc) url(shy.htc); }

如此这般操作后,使用浏览器的刷新按钮在ie下已经能保存input键入值了。
-----------------------------------------------------
不过,我们的工作还没有结束,因为在实际使用中,需要通过js来刷新页面。如果使用window.location.reload();这样的常用刷新操作,ie下依旧会重新加载而不读取浏览器缓存。

那么新的问题出现了,如何才能在用js刷新页面的情况下仍然保存上一次input的键入值呢?
为此,我们更换了刷新方法,使用了execCommand方法
不过值得注意的是execCommand方法并不适应于firefox,我们在js中使用try/catch来解决这个问题,代码如下:
		try{
            //for IE
			document.execCommand('Refresh',false,0);
        }catch (BorwerSupportException){
            //for firefox
			window.location.reload();
        }

测试通过,成功!
17
3
分享到:
评论
9 楼 曦阳向上 2013-08-26  
我怎么没有成功呢?思考中。。。
8 楼 actan 2009-09-03  
不错,收藏了!
我在cookie里搞过
也能实现

不过一直感觉有这种需求的客户都是变态
7 楼 zhangyou1010 2009-09-02  
学习了。
6 楼 gokure 2009-09-01  
顺路学习下
5 楼 unbounder 2009-09-01  
zhanglian123 写道
直接用AJAX 来刷新,不行?
AJAX刷新,区域可以控制,想刷新哪里,就可以刷新哪里,只用定义刷新ID.

是的,如果需要刷新的区域小,用ajax倒是问题没什么问题,只是这里需要刷新的内容挺多的。
╮(╯▽╰)╭,说到底需求太偏僻了。。
4 楼 jejwe 2009-09-01  
在IE下用input{behavior:url(#default#userData)}也可以保存数据。可以当缓存用
3 楼 zhanglian123 2009-09-01  
直接用AJAX 来刷新,不行?
AJAX刷新,区域可以控制,想刷新哪里,就可以刷新哪里,只用定义刷新ID.
2 楼 unbounder 2009-09-01  
yuyoo4j 写道
感觉还不如放在cookie呢.

是的,放cookie是很简单的解决方案,我们甚至还想过用个ajax丢session里面去。
但是在设计时害怕用户禁用cookie,因为这里要保留的数据对于后面的操作很重要。
1 楼 yuyoo4j 2009-09-01  
感觉还不如放在cookie呢.

相关推荐

Global site tag (gtag.js) - Google Analytics