西安观止
西安观止软件旗下品牌
  常见问题 西安网站设计
西安网页设计 做好10件事,网站上线... 01-10
西安网页设计 一般定制开发网站的步骤 10-18
西安网页设计 中小电商做SEO真的还... 10-18
西安网页设计 创意枯竭、违背道德、触... 07-11
西安网页设计 网站建设过程中容易存在... 02-15
西安网页设计 网站制作中前端包含哪些... 01-20
西安网页设计 网站规划该怎么做?一般... 11-29
西安网页设计 网站系统日志有什么用 11-20
西安网页设计 网站图像属性及替代文字... 11-12
西安网页设计 什么是书签?网站设计中... 11-08
西安网页设计 建设成功网站需要注意到... 11-01
西安网页设计 了解网站设计的内容有哪... 10-28
西安网页设计 网站定位与建设实施事项 10-21
西安网页设计 网站设计中FLASH运... 10-14
西安网页设计 网站建设的若干问题说明 10-10
西安网页设计 网站超链接分为哪几种方... 10-08
西安网页设计 网站设计中如何插入表格 09-22
西安网页设计 这是怎么了?网站首页的... 09-19
西安网页设计 小企业如何做好VI视觉... 07-04
西安网页设计 网站收录下降三大关键 07-01
西安网站建设
  文章内容  
JavaScript获取事件对象的注意点


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

以下为引用的内容:
function getEvent(event) {
    return event || window.event  // IE:window.event
}


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

以下为引用的内容:
function getEvent() {
    return arguments[0] || window.event // IE:window.event
}


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

以下为引用的内容:
<button id="btn" onclick="foo()">按钮</button>
<script>
function foo(){
   var e =  getEvent();
   alert(e);}
</script>


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

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

以下为引用的内容:
function onclick(event) {
    foo();
}


然后调用执行的是:

以下为引用的内容:
function foo(){
   var e =  getEvent();
   alert(e);
}


会发现在 Firefox 下 onclick="foo()" 中的 foo() 无法自动传入事件对象参数,而默认传递给了系统生成的 onclick 函数,那本例我们可以通过getEvent.caller.caller.arguments[0] 获得事件对象。

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

以下为引用的内容:

function getEvent(event) {
        var ev = event || window.event;
        if (!ev) {
                var c = this.getEvent.caller;
                while (c) {
                        ev = c.arguments[0];
            if (ev && (Event == ev.constructor || MouseEvent  == ev.constructor)) { /怿飞注:YUI 源码 BUG,ev.constructor 也可能是 MouseEvent,不一定是 Event
                break;
            }
            c = c.caller;
                }
        }
        return ev;
}
 


 

以下为引用的内容:
<button id="btn" onclick="foo(event)">按钮</button>


原文:http://www.planabc.net/2009/07/24/tips_for_getting_event_in_javascript/

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

责任编辑:029wxhl
常见问题       更多>>
西安网页设计 做好10件事,网站上线... 01-10
西安网页设计 一般定制开发网站的步骤 10-18
西安网页设计 中小电商做SEO真的还... 10-18
西安网页设计 创意枯竭、违背道德、触... 07-11
西安网页设计 网站建设过程中容易存在... 02-15
西安网页设计 网站制作中前端包含哪些... 01-20
解决方案        更多>>
西安网页设计 如何用「撩文化」攻心抢... 01-10
西安网页设计 微信运营之如何拉新 07-11
西安网页设计 网站超链接分为哪几种方... 11-28
西安网页设计 网站设计常见技巧分析 11-12
西安网页设计 红酒网站设计推广方案应... 10-18
西安网页设计 网站设计之如何创建目录... 10-10
网站优化       更多>>
西安网页设计 关于电子商务网站SEO... 03-26
西安网页设计 读懂这7点,让SEO效... 03-21
西安网页设计 谈关键词在网站整体优化... 01-03
西安网页设计 5个要点起一个好标题 07-18
西安网页设计 网站建设中最容易忽略的... 02-15
西安网页设计 2017年SEO推广优... 01-20
网络营销        更多>>
西安网页设计 头图也能提高打开率?不... 01-15
西安网页设计 写出好的网络营销文案的... 01-08
西安网页设计 一份关于如何提高创意思... 07-18
西安网页设计 网站公司如何在电子商务... 11-29
西安网页设计 网站访问统计的分析方式... 11-26
西安网页设计 网络推广如何提高询盘转... 11-20

关于我们 | 西安网站建设 | 西安网站设计推广 | 西安成品网站建设 | 西安网站制作案例 | 价格总览 | 网站地图 | 联系方式
Copyright @ 2006 - 2009 ShenDu.org Inc. All Rights Reserved  版权所有:西安观止软件科技有限公司
本站观键词:西安网站建设、西安网站制作、西安网站设计、西安网页设计\西安网站建设顶尖品牌、西安高端网站建设、西安网站建设公司
地址:西安市东仪路铭城16号 邮箱:shenduorg@qq.com 联系电话:029-88248475 技术支持热线:15891743886 13359293576
建议使用:1024*768分辨率,16位以上颜色IE5.0以上版本浏览器 备案号:陕ICP备11009317号-5

专注于:西安网站制作|西安网站设计|西安网站建设|西安企业网站建设