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 相关文章推荐
(仅IE下有效)关于checkbox 三态
May 12 Javascript
用 Javascript 验证表单(form)中的单选(radio)值
Sep 08 Javascript
Javascript 中文字符串处理额外注意事项
Nov 15 Javascript
基于jquery的当鼠标滚轮到最底端继续加载新数据思路分享(多用于微博、空间、论坛 )
Oct 10 Javascript
jQuery插件slider实现拖动滑块选取价格范围
Apr 30 Javascript
究竟什么是Node.js?Node.js有什么好处?
May 29 Javascript
jquery实现TAB选项卡鼠标经过带延迟效果的方法
Jul 27 Javascript
微信小程序五星评分效果实现代码
Apr 06 Javascript
JS实现弹出下载对话框及常见文件类型的下载
Jul 13 Javascript
详解node.js 下载图片的 2 种方式
Mar 02 Javascript
layer弹出层全屏及关闭方法
Aug 17 Javascript
详解微信小程序之scroll-view的flex布局问题
Jan 16 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
调频问题解答
2021/03/01 无线电
php 中的str_replace 函数总结
2007/04/27 PHP
php实现监听事件
2013/11/06 PHP
学习php设计模式 php实现观察者模式(Observer)
2015/12/09 PHP
phpStudy配置多站点多域名方法及遇到的403错误解决方法
2017/10/19 PHP
javascript加号"+"的二义性说明
2013/03/04 Javascript
在js文件中如何获取basePath处理js路径问题
2013/07/10 Javascript
多引号嵌套的变量命名的问题
2014/05/09 Javascript
Bootstrap3 input输入框插入glyphicon图标的方法
2016/05/16 Javascript
深入理解JS中的Function.prototype.bind()方法
2016/10/11 Javascript
JS实现一个简单的日历
2017/02/22 Javascript
js每隔两秒输出数组中的一项(实例)
2017/05/28 Javascript
Vue.js上下滚动加载组件的实例代码
2017/07/17 Javascript
jQuery实现的页面遮罩层功能示例【测试可用】
2017/10/14 jQuery
JavaScript寄生组合式继承实例详解
2018/01/06 Javascript
微信小程序scroll-view组件实现滚动动画
2018/01/31 Javascript
Vue 源码分析之 Observer实现过程
2018/03/29 Javascript
nuxt中使用路由守卫的方法步骤
2019/01/27 Javascript
JS函数参数的传递与同名参数实例分析
2020/03/16 Javascript
教你如何在Django 1.6中正确使用 Signal
2014/06/22 Python
python实现从网络下载文件并获得文件大小及类型的方法
2015/04/28 Python
python自定义解析简单xml格式文件的方法
2015/05/11 Python
Python中处理字符串之isalpha()方法的使用
2015/05/18 Python
举例讲解如何在Python编程中进行迭代和遍历
2016/01/19 Python
Python的Flask框架中使用Flask-SQLAlchemy管理数据库的教程
2016/06/14 Python
python 3.6.4 安装配置方法图文教程
2018/09/18 Python
Python3之不使用第三方变量,实现交换两个变量的值
2019/06/26 Python
详解pycharm连接远程linux服务器的虚拟环境的方法
2020/11/13 Python
手机端用rem+scss做适配的详解
2017/11/15 HTML / CSS
草莓网化妆品日本站:Strawberrynet日本
2017/10/20 全球购物
轻化专业学生实习自我鉴定
2013/09/20 职场文书
岗位廉洁从政承诺书
2014/03/27 职场文书
个人融资协议书范本两则
2014/10/15 职场文书
python之np.argmax()及对axis=0或者1的理解
2021/06/02 Python
Mysql中@和@@符号的详细使用指南
2022/06/05 MySQL
springboot为异步任务规划自定义线程池的实现
2022/06/14 Java/Android