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 相关文章推荐
javascript document.images实例
May 27 Javascript
基于jQuery的前端数据通用验证库
Aug 08 Javascript
IE6、IE7中setAttribute不支持class/for/rowspan/colspan等属性
Aug 28 Javascript
人人网javascript面试题 可以提前实现下
Jan 05 Javascript
jQuery的选择器中的通配符使用介绍
Mar 20 Javascript
JS生成随机字符串的多种方法
Jun 10 Javascript
node.js中的events.emitter.removeListener方法使用说明
Dec 10 Javascript
JavaScript中自定义事件用法分析
Dec 23 Javascript
jQuery中数据缓存$.data的用法及源码完全解析
Apr 29 Javascript
详解如何构建Promise队列实现异步函数顺序执行
Oct 23 Javascript
详解vue的双向绑定原理及实现
May 05 Javascript
Vue 按照创建时间和当前时间显示操作(刚刚,几小时前,几天前)
Sep 10 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
PHP+Ajax检测用户名或邮件注册时是否已经存在实例教程
2014/08/23 PHP
浅析PHP中的i++与++i的区别及效率
2016/06/15 PHP
php中通过eval实现字符串格式的计算公式
2017/03/18 PHP
javascript中节点的最近的相关节点访问方法
2013/03/20 Javascript
jQuery的text()方法用法分析
2014/12/20 Javascript
JavaScript中逗号运算符介绍及使用示例
2015/03/13 Javascript
jQuery简单实现QQ空间点赞已经取消点赞
2015/04/02 Javascript
javascript显示中文日期的方法
2015/06/18 Javascript
jquery validate和jquery form 插件组合实现验证表单后AJAX提交
2015/08/26 Javascript
js阻止浏览器默认行为触发的通用方法(推荐)
2016/05/15 Javascript
JS键盘版计算器的制作方法
2016/12/03 Javascript
Angular2开发环境搭建教程之VS Code
2017/12/15 Javascript
Node.js 使用AngularJS的方法示例
2018/05/11 Javascript
详解React+Koa实现服务端渲染(SSR)
2018/05/23 Javascript
解决Vue2.0中使用less给元素添加背景图片出现的问题
2018/09/03 Javascript
vue-cli 使用vue-bus来全局控制的实例讲解
2018/09/15 Javascript
Angular使用Restful的增删改
2018/12/28 Javascript
Vue侦测相关api的实现方法
2019/05/22 Javascript
vue实现直播间点赞飘心效果的示例代码
2019/09/20 Javascript
基于Vue+Webpack拆分路由文件实现管理
2020/11/16 Javascript
js制作提示框插件
2020/12/24 Javascript
Python 控制终端输出文字的实例
2019/07/12 Python
Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)
2020/07/20 Python
matplotlib 画动态图以及plt.ion()和plt.ioff()的使用详解
2021/01/05 Python
html5是什么_动力节点Java学院整理
2017/07/07 HTML / CSS
HTML5实现签到 功能
2018/10/09 HTML / CSS
30年同学聚会感言
2014/01/30 职场文书
平安工地建设方案
2014/05/06 职场文书
安全目标管理责任书
2014/07/25 职场文书
妇联领导班子剖析材料
2014/08/21 职场文书
毕业证代领委托书
2014/09/26 职场文书
护理自荐信
2019/05/14 职场文书
商业计划书如何写?关键问题有哪些?
2019/07/11 职场文书
原生JS中应该禁止出现的写法
2021/05/05 Javascript
JavaScript文档对象模型DOM
2021/11/20 Javascript
Python借助with语句实现代码段只执行有限次
2022/03/23 Python