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 相关文章推荐
jquery刷新页面的实现代码(局部及全页面刷新)
Jul 11 Javascript
jquery中交替点击事件的实现代码
Feb 14 Javascript
jQuery结合HTML5制作的爱心树表白动画
Feb 01 Javascript
Js为表单动态添加节点内容的方法
Feb 10 Javascript
简单纯js实现点击切换TAB标签实例
Aug 23 Javascript
angularjs2 ng2 密码隐藏显示的实例代码
Aug 01 Javascript
jQuery中库的引用方法
Jan 06 jQuery
vue 2.x 中axios 封装的get 和post方法
Feb 28 Javascript
对Vue.js之事件的绑定(v-on: 或者 @ )详解
Sep 15 Javascript
vue 解除鼠标的监听事件的方法
Nov 13 Javascript
vue 动态添加class,三个以上的条件做判断方式
Nov 02 Javascript
Vue 列表页带参数进详情页的操作(router-link)
Nov 13 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
Discuz! 5.0.0论坛程序中加入一段js代码,让会员点击下载附件前自动弹出提示窗口
2007/04/18 PHP
CodeIgniter基本配置详细介绍
2013/11/12 PHP
PHP设计模式之装饰器模式定义与用法简单示例
2018/08/13 PHP
js资料prototype 属性
2007/03/13 Javascript
基于Jquery的开发个代阴影的对话框效果代码
2011/07/28 Javascript
jQuery之自动完成组件的深入解析
2013/06/19 Javascript
jquery 清空file域示例(兼容个浏览器)
2013/10/11 Javascript
js+ajax实现获取文件大小的方法
2015/12/08 Javascript
全面了解JS中的匿名函数
2016/06/29 Javascript
jQuery Validate插件自定义验证规则的方法
2016/12/27 Javascript
jQuery基于正则表达式的表单验证功能示例
2017/01/21 Javascript
AngularJS ng-repeat指令及Ajax的应用实例分析
2017/07/06 Javascript
JS运动改变单物体透明度的方法分析
2018/01/23 Javascript
vue中post请求以a=a&b=b 的格式写遇到的问题
2018/04/27 Javascript
Node.js 使用jade模板引擎的示例
2018/05/11 Javascript
Vue 应用中结合vux使用微信 jssdk的方法
2018/08/28 Javascript
在vue项目中使用Jquery-contextmenu插件的步骤讲解
2019/01/27 jQuery
Seajs源码详解分析
2019/04/02 Javascript
python通过装饰器检查函数参数数据类型的方法
2015/03/13 Python
pandas数值计算与排序方法
2018/04/12 Python
python 对txt中每行内容进行批量替换的方法
2018/07/11 Python
python实现基于朴素贝叶斯的垃圾分类算法
2019/07/09 Python
python的slice notation的特殊用法详解
2019/12/27 Python
Python读取文件内容为字符串的方法(多种方法详解)
2020/03/04 Python
Python telnet登陆功能实现代码
2020/04/16 Python
Python 实现3种回归模型(Linear Regression,Lasso,Ridge)的示例
2020/10/15 Python
animation和transition的区别
2020/10/12 HTML / CSS
AmazeUI 网格的实现示例
2020/08/13 HTML / CSS
为数据库创建索引都需要注意些什么
2012/07/17 面试题
《美丽的小路》教学反思
2014/02/26 职场文书
求职简历自我评价怎么写
2015/03/10 职场文书
建国大业观后感800字
2015/06/01 职场文书
2015年国庆节标语大全
2015/07/30 职场文书
golang中的空slice案例
2021/04/27 Golang
OpenCV-Python实现轮廓拟合
2021/06/08 Python
Redis如何实现分布式锁
2021/08/23 Redis