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 相关文章推荐
JS的get和set使用示例
Feb 20 Javascript
AngularJS入门教程之学习环境搭建
Dec 06 Javascript
jQuery搜索同辈元素方法
Feb 10 Javascript
js滚动条平滑移动示例代码
Mar 29 Javascript
javascript实现不同颜色Tab标签切换效果
Apr 27 Javascript
深入解析js轮播插件核心代码的实现过程
Apr 14 Javascript
bootstrap-table实现服务器分页的示例 (spring 后台)
Sep 01 Javascript
Angular17之Angular自定义指令详解
Jan 21 Javascript
小程序开发基础之view视图容器
Aug 21 Javascript
layer弹窗在键盘按回车将反复刷新的实现方法
Sep 25 Javascript
基于Vue el-autocomplete 实现类似百度搜索框功能
Oct 25 Javascript
给原生html中添加水印遮罩层的实现示例
Apr 02 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
PHP5在Apache下的两种模式的安装
2006/09/05 PHP
深入PHP运行环境配置的详解
2013/06/04 PHP
PHP可变函数的使用详解
2013/06/14 PHP
PHP+MYSQL会员系统的开发实例教程
2014/08/23 PHP
php获取URL中带#号等特殊符号参数的解决方法
2014/09/02 PHP
PHP实现递归无限级分类
2015/10/22 PHP
如何离线执行php任务
2017/02/21 PHP
ExtJS TabPanel beforeremove beforeclose使用说明
2010/03/31 Javascript
jQuery源码分析-03构造jQuery对象-工具函数
2011/11/14 Javascript
jQuery bxCarousel实现图片滚动切换效果示例代码
2013/05/15 Javascript
EasyUI实现第二层弹出框的方法
2015/03/01 Javascript
使用jquery制作弹出框效果
2015/04/03 Javascript
详解webpack 入门总结和实践(按需异步加载,css单独打包,生成多个入口文件)
2017/06/20 Javascript
webpack4.0+vue2.0利用批处理生成前端单页或多页应用的方法
2019/06/28 Javascript
JS实现手风琴特效
2020/11/08 Javascript
[01:00:52]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第一场
2018/04/05 DOTA
[01:21:07]EG vs Liquid 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
跟老齐学Python之有容乃大的list(3)
2014/09/15 Python
Python3 能振兴 Python的原因分析
2014/11/28 Python
django通过ajax发起请求返回JSON格式数据的方法
2015/06/04 Python
用Python实现KNN分类算法
2017/12/22 Python
selenium+python实现自动化登录的方法
2018/09/04 Python
Django框架实现的简单分页功能示例
2018/12/04 Python
python变量的存储原理详解
2019/07/10 Python
Python学习笔记之集合的概念和简单使用示例
2019/08/22 Python
python实现小世界网络生成
2019/11/21 Python
用OpenCV将视频分解成单帧图片,图片合成视频示例
2019/12/10 Python
Python中常见的数制转换有哪些
2020/05/27 Python
python中线程和进程有何区别
2020/06/17 Python
python实现网页录音效果
2020/10/26 Python
css3 实现滚动条美化效果的实例代码
2021/01/06 HTML / CSS
html5生成柱状图(条形图)效果的实例代码
2016/03/25 HTML / CSS
安全生产先进个人材料
2014/02/06 职场文书
支部书记四风问题自我剖析材料
2014/09/29 职场文书
Mysql索引失效 数据库表中有索引还是查询很慢
2022/05/15 MySQL
使用CSS实现按钮边缘跑马灯动画
2023/05/07 HTML / CSS