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 相关文章推荐
jquery ajax方式直接提交整个表单核心代码
Aug 15 Javascript
js 异步操作回调函数如何控制执行顺序
Dec 24 Javascript
js判断浏览器类型及设备(移动页面开发)
Jul 30 Javascript
Angular.js与Bootstrap相结合实现表格分页代码
Apr 12 Javascript
Javascript简写条件语句(推荐)
Jun 12 Javascript
js实现图片缓慢放大缩小效果
Aug 02 Javascript
jquery实现全选、不选、反选的两种方法
Sep 06 Javascript
canvas绘制环形进度条
Feb 23 Javascript
javascript用rem来做响应式开发
Jan 13 Javascript
jquery判断滚动条距离顶部的距离方法
Sep 05 jQuery
微信小程序开发技巧汇总
Jul 15 Javascript
在weex中愉快的使用scss的方法步骤
Jan 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
PHP 第二节 数据类型之数组
2012/04/28 PHP
ThinkPHP3.1新特性之对页面压缩输出的支持
2014/06/19 PHP
PHP实现懒加载的方法
2015/03/07 PHP
asp 取文本框名称代码
2008/12/02 Javascript
Jquery操作Select 简单方便 一个js插件搞定
2009/11/12 Javascript
从零开始学习jQuery (十一) 实战表单验证与自动完成提示插件
2011/02/23 Javascript
解决JQeury显示内容没有边距内容紧挨着浏览器边线
2013/12/20 Javascript
Javascript学习笔记之函数篇(四):arguments 对象
2014/11/23 Javascript
浅谈js中的延迟执行和定时执行
2016/05/31 Javascript
Javascript中八种遍历方法的执行速度深度对比
2017/04/25 Javascript
vue.js项目中实用的小技巧汇总
2017/11/29 Javascript
20个最常见的jQuery面试问题及答案
2018/05/23 jQuery
Net微信网页开发 使用微信JS-SDK获取当前地理位置过程详解
2019/08/26 Javascript
jQuery实现简单评论功能
2020/08/19 jQuery
js实现拖拽元素选择和删除
2020/08/25 Javascript
JavaScript 生成唯一ID的几种方式
2021/02/19 Javascript
在DigitalOcean的服务器上部署flaskblog应用
2015/12/19 Python
python 性能提升的几种方法
2016/07/15 Python
apache部署python程序出现503错误的解决方法
2017/07/24 Python
利用Pandas读取文件路径或文件名称包含中文的csv文件方法
2018/07/04 Python
Python常见读写文件操作实例总结【文本、json、csv、pdf等】
2019/04/15 Python
python解释器spython使用及原理解析
2019/08/24 Python
使用Python脚本zabbix自定义key监控oracle连接状态
2019/08/28 Python
python+adb命令实现自动刷视频脚本案例
2020/04/23 Python
python查找特定名称文件并按序号、文件名分行打印输出的方法
2020/04/24 Python
python3.6.8 + pycharm + PyQt5 环境搭建的图文教程
2020/06/11 Python
浅谈Python中的继承
2020/06/19 Python
python中return不返回值的问题解析
2020/07/22 Python
您在慕尼黑的跑步商店:Lauf-bar
2019/10/11 全球购物
机关门卫岗位职责
2013/12/30 职场文书
优秀毕业自我鉴定
2014/02/15 职场文书
2014光棍节大学生联谊活动方案
2014/10/10 职场文书
导师工作推荐信
2015/03/27 职场文书
MongoDB 常用的crud操作语句
2021/06/20 MongoDB
Python自动操作神器PyAutoGUI的使用教程
2022/06/16 Python
python中pd.cut()与pd.qcut()的对比及示例
2022/06/16 Python