您好,欢迎访问一九零五行业门户网

JS事件在IE与FF中的区别详细解析_javascript技巧

之道的易搜项目中的搜索分类是通过js动态生成的,每个生成的元素都要动态的添加属性、事件。其中,添加属性可以采用赋值的方式,这对ie和ff都是适用的。比如:
     var element = document.createelement('select');
     element.id = myselect;
上面的语句在ie和ff中都会有同样的效果,并且运行正常。但是我们创建的元素,大部分是要给其动态添加事件的,显然,我们不能和添加属性一样,直接在后面打个dot,然后写个事件名,然后后面跟着一串代码,那样是会报错的。所以我们可以采用如下的方法来添加事件:
首先:我们要判断当前的浏览器是什么浏览器,我们仍然延用之前的定义,
   if( element.attachevent ){
    //为ie以及ie内核的浏览器(1)
   }else if( element.addeventlistener){
     //为ff以及ns内核的浏览器(2)
   }
上面的if语句块就是帮我们完成当前浏览器是ie还是ff的判断。
浏览器判断出来,然后我们要做的就是把函数注册到元素里面。下面我们给出我们定义的一个功能函数:
   function showelementid(elmt){
     alert(elmt.id);
   }
函数功能很简单,就是提示出参数里面的元素的id。
如果是ie浏览器,我们把如下代码插入到上面的注释(1)处:
element.attachevent( onclick,function(){showelementid(elmt)});
如果是ff浏览器,我们把如下代码插入到上面的注释(2)处:
var eventname = onclick.replace(/on(.*)/i,'$1');
element.addeventlistener( eventname,function(){showelementid(elmt)},false);
因为在ff中给元素注册事件的时候,不需要事件名称前面的“on”,所以要把on给替换掉。
好啦,如果今后各位同行在开发项目中,遇到要用js动态给元素添加事件的时候,就可以采用上面的方法。那样就可以避免用户在用ff浏览器时候不能使用你幸苦开发的功能了。
其它类似信息

推荐信息