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 相关文章推荐
表单元素事件 (Form Element Events)
Jul 17 Javascript
JavaScript中null与undefined分析
Jul 25 Javascript
通过JS 获取Mouse Position(鼠标坐标)的代码
Sep 21 Javascript
简单实用的js调试logger组件实现代码
Nov 20 Javascript
js判断手机号运营商的方法
Oct 23 Javascript
js点击按钮实现水波纹效果代码(CSS3和Canves)
Sep 15 Javascript
基于angular实现三级联动的生日插件
May 12 Javascript
prototype.js简单实现ajax功能示例
Oct 18 Javascript
解决Mac安装thrift因bison报错的问题
May 17 Javascript
解决循环中setTimeout执行顺序的问题
Jun 20 Javascript
vue路由对不同界面进行传参及跳转的总结
Apr 20 Javascript
Vue过滤器(filter)实现及应用场景详解
Jun 15 Vue.js
引用 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
简单的过滤字符串中的HTML标记
2006/12/25 PHP
分享一个PHP数据流应用的简单例子
2012/06/01 PHP
php使用Jpgraph绘制3D饼状图的方法
2015/06/10 PHP
PHP Ajax JavaScript Json获取天气信息实现代码
2016/08/17 PHP
php自定义时间转换函数示例
2016/12/07 PHP
php生成图片缩略图功能示例
2017/02/22 PHP
浅谈PHP中pack、unpack的详细用法
2018/03/12 PHP
javascript入门·图片对象(无刷新变换图片)\滚动图像
2007/10/01 Javascript
jQuery autocomplete插件修改
2009/04/17 Javascript
JavaScript取得鼠标绝对位置程序代码介绍
2012/09/16 Javascript
input链接页面、打开新网页等等的具体实现
2013/12/30 Javascript
基于jQuery实现下拉框
2014/11/24 Javascript
iScroll中事件点击触发两次解决方案
2015/03/11 Javascript
angularjs客户端实现压缩图片文件并上传实例
2015/07/06 Javascript
JavaScript类型系统之正则表达式
2016/01/05 Javascript
JS针对Array的各种操作汇总
2016/11/29 Javascript
用JavaScript和jQuery实现瀑布流
2017/03/19 Javascript
微信小程序多张图片上传功能
2017/06/07 Javascript
详解利用Angular实现多团队模块化SPA开发框架
2017/11/27 Javascript
Vue路由钩子之afterEach beforeEach的区别详解
2018/07/15 Javascript
angularJs利用$scope处理升降序的方法
2018/10/08 Javascript
微信小程序实现单选功能
2018/10/30 Javascript
JavaScript箭头函数中的this详解
2019/06/19 Javascript
VSCode launch.json配置详细教程
2020/06/18 Javascript
Python读大数据txt
2016/03/28 Python
Python实现随机生成有效手机号码及身份证功能示例
2017/06/05 Python
Django学习笔记之ORM基础教程
2018/03/27 Python
python绘制圆柱体的方法
2018/07/02 Python
python爬虫的一个常见简单js反爬详解
2019/07/09 Python
python dict乱码如何解决
2020/06/07 Python
波兰最大的电商平台:Allegro.pl
2021/02/06 全球购物
你经历的项目中的SCM配置项主要有哪些?什么是配置项?
2013/11/04 面试题
应届大专毕业生个人自荐信
2013/09/22 职场文书
劳动之星获奖感言
2014/02/01 职场文书
公务员群众路线心得体会
2014/11/03 职场文书
公司人事任命通知
2015/04/20 职场文书