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


Posted in Javascript onNovember 20, 2013

之道的易搜项目中的搜索分类是通过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浏览器时候不能使用你幸苦开发的功能了。

Javascript 相关文章推荐
List Information About the Binary Files Used by an Application
Jun 11 Javascript
javascript contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
Feb 04 Javascript
javascript异步处理工作机制详解
Apr 13 Javascript
js调用百度地图及调用百度地图的搜索功能
Sep 07 Javascript
jQuery基础_入门必看知识点
Jul 04 Javascript
bootstrap网格系统使用方法解析
Jan 13 Javascript
angular实现form验证实例代码
Jan 17 Javascript
Angular.JS中指令ng-if、ng-show/ng-hide和ng-switch的使用教程
May 07 Javascript
AngularJS实现自定义指令与控制器数据交互的方法示例
Jun 19 Javascript
微信小程序显示倒计时功能示例【测试可用】
Dec 03 Javascript
layer实现登录弹框,登录成功后关闭弹框并调用父窗口的例子
Sep 11 Javascript
vue实现购物车案例
May 30 Javascript
引用 js在IE与FF之间的区别详细解析
Nov 20 #Javascript
JavaScript之IE的fireEvent方法详细解析
Nov 20 #Javascript
JavaScript中setInterval的用法总结
Nov 20 #Javascript
JQuery操作iframe父页面与子页面的元素与方法(实例讲解)
Nov 20 #Javascript
jquery iframe操作详细解析
Nov 20 #Javascript
JS获取当前日期和时间的简单实例
Nov 19 #Javascript
js 自动播放的实例代码
Nov 19 #Javascript
You might like
40个迹象表明你还是PHP菜鸟
2008/09/29 PHP
asp 的 分词实现代码
2007/05/24 Javascript
JQuery 遮罩层实现(mask)实现代码
2010/01/09 Javascript
JS 树形递归实例代码
2010/05/18 Javascript
jquery实现心算练习代码
2010/12/06 Javascript
面向对象的Javascript之二(接口实现介绍)
2012/01/27 Javascript
JavaScript电子时钟倒计时
2016/01/09 Javascript
canvas绘制万花筒效果(代码分享)
2017/01/20 Javascript
require.js中的define函数详解
2017/07/10 Javascript
Node.js pipe实现源码解析
2017/08/12 Javascript
vue实现a标签点击高亮方法
2018/03/17 Javascript
vue基于element-ui的三级CheckBox复选框功能的实现代码
2018/10/15 Javascript
vue以组件或者插件的形式实现throttle或者debounce
2019/05/22 Javascript
Vue将页面导出为图片或者PDF
2020/08/17 Javascript
js实现中文实时时钟
2020/01/15 Javascript
[17:00]DOTA2 HEROS教学视频教你分分钟做大人-帕克
2014/06/10 DOTA
python通过post提交数据的方法
2015/05/06 Python
Python批量重命名同一文件夹下文件的方法
2015/05/25 Python
Python删除Java源文件中全部注释的实现方法
2017/08/30 Python
python生成n个元素的全组合方法
2018/11/13 Python
Django Form 实时从数据库中获取数据的操作方法
2019/07/25 Python
python实现证件照换底功能
2019/08/20 Python
前端面试必备之html5的新特性
2017/09/05 HTML / CSS
美国瑜伽品牌:Gaiam
2017/10/31 全球购物
NFL欧洲商店(德国):NFL Europe Shop DE
2018/11/03 全球购物
我能否用void** 指针作为参数, 使函数按引用接受一般指针
2013/02/16 面试题
信息技术专业大学生职业生涯规划书
2014/01/24 职场文书
《风娃娃》教学反思
2014/04/19 职场文书
承诺书格式范文
2014/06/03 职场文书
cf战队收人口号
2014/06/21 职场文书
公司应聘求职信
2014/06/21 职场文书
乡镇党建工作汇报材料
2014/08/14 职场文书
施工安全员岗位职责
2015/04/11 职场文书
行为习惯主题班会
2015/08/14 职场文书
《伯牙绝弦》教学反思
2016/02/16 职场文书
Python基础之Socket通信原理
2021/04/22 Python