JS事件在IE与FF中的区别是什么?IE与FF详细解析

之道的易搜项目中的搜索分类是通过JS动态生成的 , 每个生成的元素都要动态的添加属性、事件 。其中 , 添加属性可以采用赋值的方式 , 这对IE和FF都是适用的 。

JS事件在IE与FF中的区别是什么?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浏览器时候不能使用你幸苦开发的功能了 。
【JS事件在IE与FF中的区别是什么?IE与FF详细解析】

    推荐阅读