zoukankan      html  css  js  c++  java
  • JS获取事件源对象

    发现问题:

    1. 在复杂事件处理过程中,很可能会丢失event事件对象,特别是IE和FireFox两大浏览器,这个时候要捕获事件源就非常困难……
    2. 如果在事件处理过程中,需要不断地传递event事件对象作为参数,这是一个非常痛苦的事情……

    解决问题:

    1. 使用caller函数可以获取事件堆栈,通过简单分析来获取事件源对象,彻底解决事件源获取问题。
    2. 同时也解决所有浏览器兼容问题。亲测如下语句支持绝大部分浏览器(Chrome/FireFox/IE/Safari/Opera)

    Javascript源代码:

    //获取事件源的ID
    function getTarget() {
        var evt = getEvent();
        var eventFrom = evt.target || evt.srcElement;
        if(eventFrom.nodeName == "OPTION") {
            eventFrom = eventFrom.parentElement;
        }
        return eventFrom.id;
    }
    
    
    //获取事件源
    function getEvent() {
    if (typeof(event) != "undefined" || window.event) return event || window.event;
    func = getEvent.caller;
    while (func != null) {
    var arg0 = func.arguments[0];
    if (arg0) { if ((arg0.constructor == Event || arg0.constructor == MouseEvent) || (typeof (arg0) == "object" && arg0.preventDefault && arg0.stopPropagation)) { return arg0; } }
    func = func.caller;
    }
    return null;
    }
  • 相关阅读:
    mac下xcode中include path
    如何联机调试和发布程序
    Facebook 错误码
    app store给应用评分功能
    FTP传输模式
    重新安装 Visual Studio 6.0 的问题
    ASP项目:提示用户 'NT AUTHORITY\NETWORK SERVICE' 登录失败
    投资项目的4P
    .net 的资源与本地化
    千万不能干的事(文摘)
  • 原文地址:https://www.cnblogs.com/globalwatch/p/3337125.html
Copyright © 2011-2022 走看看