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 贪吃蛇实现代码
Nov 22 Javascript
JavaScript入门教程(5) js Screen屏幕对象
Jan 31 Javascript
JavaScript弹簧振子超简洁版 完全符合能量守恒,胡克定理
Oct 25 Javascript
javascript与CSS复习(二)
Jun 29 Javascript
javascript 事件绑定问题
Jan 01 Javascript
基于JS实现EOS隐藏错误提示层代码
Apr 25 Javascript
sso跨域写cookie的一段js脚本(推荐)
May 25 Javascript
JS前端开发判断是否是手机端并跳转操作(小结)
Feb 05 Javascript
MUI 解决动态列表页图片懒加载再次加载不成功的bug问题
Apr 13 Javascript
three.js利用射线Raycaster进行碰撞检测
Mar 12 Javascript
Vue-cli 移动端布局和动画使用详解
Aug 10 Javascript
Vue的生命周期一起来看看
Feb 24 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
PHP 身份验证方面的函数
2009/10/11 PHP
浅析php中json_encode()和json_decode()
2014/05/25 PHP
php中用memcached实现页面防刷新功能
2014/08/19 PHP
Laravel框架中实现使用阿里云ACE缓存服务
2015/02/10 PHP
mysql输出数据赋给js变量报unterminated string literal错误原因
2010/05/22 Javascript
js控制web打印(局部打印)方法整理
2013/05/29 Javascript
js调用css属性写法
2013/09/21 Javascript
window.print打印指定div实例代码
2013/12/13 Javascript
JS建造者模式基本用法实例分析
2015/06/30 Javascript
深入学习JavaScript的AngularJS框架中指令的使用方法
2016/03/05 Javascript
基于jquery实现弹幕效果
2016/09/29 Javascript
Angular企业级开发——MVC之控制器详解
2017/02/20 Javascript
表格展示利器 Bootstrap Table实例代码
2017/09/06 Javascript
详解javascript常用工具类的封装
2018/01/30 Javascript
Node配合WebSocket做多文件下载以及进度回传
2019/11/07 Javascript
[00:27]DOTA2次级职业联赛 - Lilith战队宣传片
2014/12/01 DOTA
[42:52]IG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python使用bs4获取58同城城市分类的方法
2015/07/08 Python
pandas带有重复索引操作方法
2018/06/08 Python
Python Matplotlib实现三维数据的散点图绘制
2019/03/19 Python
python实现支付宝转账接口
2019/05/07 Python
简单了解python的一些位运算技巧
2019/07/13 Python
用python按照图像灰度值统计并筛选图片的操作(PIL,shutil,os)
2020/06/04 Python
Python利用imshow制作自定义渐变填充柱状图(colorbar)
2020/12/10 Python
捷克鲜花配送:Florea.cz
2018/10/29 全球购物
PPP协议组成及简述协议协商的基本过程
2015/05/28 面试题
个人求职简历的自我评价
2013/10/19 职场文书
秋天的图画教学反思
2014/05/01 职场文书
学生党员一帮一活动总结
2014/07/08 职场文书
工程承包协议书
2014/10/20 职场文书
学习普通话的体会
2014/11/07 职场文书
学校党支部公开承诺书
2015/04/30 职场文书
Windows10下安装MySQL8
2021/04/06 MySQL
Redis延迟队列和分布式延迟队列的简答实现
2021/05/13 Redis
单身狗福利?Python爬取某婚恋网征婚数据
2021/06/03 Python
OpenCV-Python模板匹配人眼的实例
2021/06/08 Python