logo
 
 
|
|
|
|
|
|
|
|
 
 
您的位置:首页 - 专业知识
获取键盘按键的Javascript代码(兼容IE、Firefox)
[2010-06-26]
获取键盘按键的Javascript代码(兼容IE、Firefox)

 作者:北大青鸟南京中博-张宪芝

        南京航空航天大学计算机技术研究生,曾前往德国交流,多年高校及软件开发公司工作经验。

        S2很重要的一门课程《JavaScript客户端验证和页面特效制作》的第六章给同学们介绍了获取键盘按键的JavaScript代码,可惜该段代码适用于IE浏览器,在Firefox中却完全失了效果,经不起推敲。在本文中,我把上课时给同学们补充的例子写下,方便同学们学习。

         同学们可将下面的JavaScript代码复制到head标签内验证。
     document.onkeydown=function(evt)
 {
               var isie = (document.all) ? true : false;
               var key;
               var srcobject;
               if (isie)
               {
                  key = event.keyCode;
                   srcobject=event.srcElement;
               }
               else
               {
                   key = evt.which;
                   srcobject=evt.target;
               }               
                  

                if(key==13 && srcobj.type!='button' && srcobj.type!='submit' &&srcobj.type!='reset' && srcobj.type!='textarea' && srcobj.type!='')                     {
                    if(isie)
                    {
                      event.keyCode=9;
                    }
                    else
                    {                       
                       var el=getNextElement(evt.target);
                            if (el.type!="hidden")
                                el.focus();
                            else
                                while (el.type=="hidden")
                                   el=getNextElement(el);
                                el.focus();
                            return false;
                   }
                 }
              }               
              function getNextElement (field) {
                   var form = field.form;
                   for (var e = 0; e < form.elements.length; e++) {
                     if (field == form.elements[e])
                         break;
                   }
                   return form.elements[++e % form.elements.length];
              } 

我们分析这段代码的第一句var isie = (document.all) ? true : false;
它的目的是判断当前浏览器类型,以期区别对待IE和其他浏览器。
 首先需要确定当前浏览器中的document对象是否有all这个属性,IE中,这个属性值就是当前页面的所有的元素,那么显然all是一个object,可以这样理解:
document.all = {ele1:, ele2:, .... ...};
那么你想访问一个div,id=div1,就可以document.all.div1。
然而其他浏览器比如Firefox中,document没有all这个属性,document.all = undefined,而if在运算的时候,会把括号里面的表达式值试图转换成boolean类型,显然,对于IE,document.all是存在的,因此结果为真的,对于其他浏览器,这个就是undefined,这个转换成boolean就是false了。

上一篇:测试脚本之二:数据驱动脚本
下一篇:测试脚本之一:线性脚本
   
苹果平板电脑可能带有动态触控键盘 苹果平板电脑可能带有动态触控键盘
三道JavaScript面试题 三道JavaScript面试题
键盘上流淌的日子 键盘上流淌的日子
Java Swing中键盘事件的处理 Java Swing中键盘事件的处理
 

在线报名

  • 姓       名:*
  • 高考成绩:*
  • 电       话:*
  • 地       址:*
 
课程咨询
 

 
中博教育客服在线
 
©南京北大青鸟 隐私政策
学费咨询
学历咨询
专业咨询
订座试听
就业咨询
课程咨询
测试认证
软件认证