event 对象兼容火狐、谷歌、ie浏览器问题

本文介绍了在JavaScript中处理动态生成元素事件时,如何解决event对象在不同浏览器间的兼容性问题。主要讨论了通过传递event参数、使用arguments.callee.caller.arguments[0]以及为火狐添加event属性的方法来获取当前触发事件的元素属性值。通过示例代码展示了在Firefox、Chrome和IE中获取event对象的实现。
摘要由CSDN通过智能技术生成

        项目中遇到这样一个业务需求:给动态生成的页面元素(input、div、checkbox等)添加事件,业务实现的难点在于:动态生成的页面元素的id、name都是按一定规则赋值的(例如:input1、input2..),那么给这些元素添加事件需要获取到动态生成元素的id或name属性值,根据属性值取到元素对象然后添加事件。

            经过以上分析不难看出:难点就在于取得动态生成元素的id、name属性值,给元素添加事件应该很容易办到,这时js中一个重要的对象event 该隆重出场了。

        事件发生的过程中 event对象才生效,event对象有很对属性:例如触发event对象的元素、鼠标的位置及状态、按下的键等等。 event的某些属性只对特定的事件有意义。比如,fromElement 和 toElement 属性只对 onmouseover 和 onmouseout 事件有意义。 具体event 的对象的众多属性在此就不做详细的介绍,网上关于event属性介绍的帖子很多。

         获取当前触发事件的页面元素 使用event的target和srcElement 属性,srcElement 在ie中使用,target在firefox中使用,chrome浏览器同时具有这两个属性,但据我个人测试,target属性在ie10中也可以使用了(ie其他版本没有测试),这样如果我要获取触发事件的元素的属性值就可以搞定了:

         var name_val = event.target.name;

         var id_val = event.target.id;

         但是问题出现了:在火狐浏览器中不能直接用event对象,浏览器无法根据当前触发的事件获取event对象。解决方法有这么几种:

        (1)调用事件方法时添加参数event(参数名称必须为event,其他名称不可以),例如: function aa(event){........} ,元素:<input type="text" οnclick="aa(event)"></input>

          (2)使用函数   arguments.callee.caller.arguments[0] 获取event对象,使用这种方法不需要在函数中声明event参数,可以直接使用,而且在火狐浏览器中有效

         (3)为火狐浏览器声明可以直接调用的event对象:

         

  1. /*
  2. 判断浏览器名称和版本
  3. 目前只能判断:ie/firefox/chrome/opera/safari
  4. 2012年5月16日23:47:08
  5. 浏览器内核名称:NV.name;
  6. 浏览器内核版本:NV.version;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值