如何在IE和Firefox里屏蔽BackSpace
在网页上输入信息,特别是注册的时候,如果输入的焦点不在输入框里的话,按BackSpace键,IE和Firefox以及许多浏览器都会理解为”后退”命令,返回上一页。这样的话,刚才输入的内容就全没了。这是非常让人泄气的事儿,为了在自己设计的页面里,给用户更好的使用体验,有必要屏蔽掉这个功能。
其实,在GMail,Google Document等许多基于Web的应用都对这个问题作了相应的处理。当这种操作发生时,出项一个警告,提示用户是否真的想放弃当前页面上输入的内容。这个屏蔽功能其实很简单,只要在你写的html里加上一段Javascript代码就行了。让javascript代码检查用户的输入事件,如果发生了输入焦点不在输入框的时候,用户按下了Backspace键,那就触发相应的代买来处理就行了。但,需要注意的是IE和Firefox的事件处理方法不同,API也不一样,需要区别对待。做Web应用最让人恼火是莫过于此了。为了适应各种浏览器,不得不写各种对应代码,然后在各种浏览器上做测试。如果Web应用还有手机可以浏览的功能,那就更麻烦了。现在市场上,几乎每天都在发布新的手机,为了不出问题,你就必须定期的在所有的新手机上做测试。这是让人抓狂啊。要是有统一的标准该多好。
好像跑题了,呵呵,演过正传,下面就是实例代码,在IE7和Firefox3测试通过。
- <script type="text/javascript"><!--
- // For IE
- if (typeof window.event != 'undefined') {
- document.onkeydown = function() {
- var type = event.srcElement.type;
- var code = event.keyCode;
- return ((code != 8 && code != 13) ||
- (type == 'text' && code != 13 ) ||
- (type == 'textarea') ||
- (type == 'submit' && code == 13))
- }
- } else { // FireFox/Others
- document.onkeypress = function(e) {
- var type = e.target.type;
- var code = e.keyCode;
- if ((code != 8 && code != 13) ||
- (type == 'text' && code != 13 ) ||
- (type == 'textarea') ||
- (type == 'submit' && code == 13)) {
- return true
- } else {
- alert('你真的想放弃现在正在编辑的内容吗?再想想!');
- return false
- }
- }
- }
- // --></script>


