JavaScript获取事件对象的注意事项

2016-02-20 01:03 5 1 收藏

给自己一点时间接受自己,爱自己,趁着下午茶的时间来学习图老师推荐的JavaScript获取事件对象的注意事项,过去的都会过去,迎接崭新的开始,释放更美好的自己。

【 tulaoshi.com - Web开发 】

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

平时我们获取事件对象一般写法如下:

 getEvent 
   window  

如果没有参数,也可写成(非IE :事件对象会自动传递给对应的事件处理函数,且为第一个参数):

 getEvent 
    arguments window

这样的写法在除 Firefox(测试版本:3.0.12,下同) 外的浏览器上运行都不会有问题,但 Firefox 为什么例外呢?让我们这样一种情形:

foo按钮


foo
    e  getEvent
   alerte

运行结果在 Firefox 中是 ,为什么呢?

在 Firefox 中调用其实是这样的,先调用执行的是:

 foo
    e  getEvent
   alerte

然后调用执行的是:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)
 onclick 
    foo

会发现在 Firefox 下 onclick 中的 foo 无法自动传入事件对象参数,而默认传递给了系统生成的 onclick 函数,那本例我们可以通过 getEventcallercallerarguments 获得事件对象。

因此,我们的 getEvent 可以优化成(参照 yui_2.7.0b 中的 event/event-debug.js 中 getEvent 方法):

 getEvent 
        evwindow

        ev
                c getEventcaller
                c
                        ev carguments
            evev   ev
               
           
            c ccaller
               
       

        ev

当然还有一个很简单的解决方法,就是手动将参数传递给 onclick

foo按钮

来源:http://www.tulaoshi.com/n/20160220/1633163.html

延伸阅读
标签: Web开发
javascript 中的 RegExp 对象用于正则表达式相关的操作,这个对象提供了一个方法 test 来判定某个字符串是否满足某个 pattern. 返回值是 true/false. 今天我碰到了一个问题: script type="text/javascript" !-- var re = /^d+(?:.d)?$/ig;    alert(re.test('112.3')); alert(re.test('33')); /...
标签: Web开发
1、基本概念 JavaScript 是基于对象(object-based)的语言。这与Java不同,Java是面向对象的语言。而基于对象的基本特征,就是采用事件驱动(event-driven)。它是在用形界面的环境下,使得一切输入变化简单化。通常鼠标或热键的动作我们称之为事件(Event),而由鼠标或热键引发的一连串程序的动作,称之为事件驱动(Event Driver)。...
标签: Web开发
事件处理概述  事件处理是对象化编程的一个很重要的环节,没有了事件处理,程序就会变得很死,缺乏灵活性。事件处理的过程可以这样表示:发生事件 - 启动事件处理程序 - 事件处理程序作出反应。其中,要使事件处理程序能够启动,必须先告诉对象,如果发生了什么事情,要启动什么处理程序,否则这个流程就不能进行...
标签: 怀孕
天气越来越热了,即使大腹便便,洗澡也是孕妇每天不可少的“功课”之一。专家建议孕妇,夏天洗澡有三注意,即水温不宜过高或过低、洗澡时间不宜过长、最好不要坐浴。 妇产科医师称孕妇在怀孕早期也就是怀孕的前3个月里,孕妇洗澡时室温不宜过高,温度以皮肤不感到凉为宜。 水温最好温热,和体温差不多或者比体温略高,一般来说...
标签: Web开发
昨天搞了一个日历选择器的小东西,竟然发现以前用的获取标签的座标的函数在Firefox下不能执行,比较郁闷。于是花心思整理了一个,现此代码支持Ie,Firefox,Opera,记录于此! javascript获取座标 function getAbsPoint(e) {        var x = e.offsetLeft;        var y = e...

经验教程

682

收藏

60
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部