韩国福利视频2828网

当前位置:美女AV > Web开发 > JavaScript > 正文  |  快速导航:ASP PHP JSP ASP.NET JavaScript JQuery Extjs Ajax Silverlight Flex WebService WCF prototype mootools Dojo
  • 获取event对象 兼容IE和FireFox浏览器

  • 字号:[ ]2014-2-28 19:42:53  阅读:22次  来源:乐猪网  编辑:银河精灵  收藏
  • 摘要:要获取元素(控件)的点击事件,可以通过event对象,再使用event.srcElement或者event.target得到点击的元素。获取event对象涉及到浏览器兼容性问题,下面讲解获取event对象的正确方法。
  •     今天,在公司开发项目的时候,遇到一个超烦人的兼容浏览器问题,哪就是获取 event 对象。想获取 TreeView 中点击的节点,在 IE 下是正常的,但是在 FireFox 下就不行了!以前没有很在意浏览器的兼容性问题,公司的项目都是建议使用 IE 浏览器的,算是第一次遇到这样的问题吧!

        下面的代码在火狐浏览器下是没有效的:

    function GetEventObj() { 
        var element = event.srcElement || event.target; 
        alert(element); 
    }

    韩国福利视频2828网    一开始不知道是什么导致的,在网上查了好久,后来在某个博客中看到这样的一个方法:

    //获取event对象,兼容FireFox浏览器 
    function getEvent() { 
        if (document.all) { 
            return window.event;//如果是ie 
        } 
        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; 
    }

        经过测试可行,问题解决了,开心!下面是完整的测试例子:

    <html xmlns="http://www.w3.org/1999/xhtml" > 
    <head> 
        <title>获取event对象</title> 
        <script type="text/javascript"> 
            //获取控件事件 
            function GetEventObj() { 
                var event = getEvent(); 
                var element = event.srcElement || event.target; 
                alert(element); 
            } 
              
            //获取event对象,兼容浏览器 
            function getEvent() { 
                if (document.all) { 
                    return window.event;//如果是ie 
                } 
                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; 
            } 
        </script> 
    </head> 
    <body> 
        <input type="button" id="btnGetEvent" value="获取" onclick="GetEventObj();" /> 
    </body> 
    </html>

        一开始以为是 event.srcElement 和 event.target 之间的兼容性问题,原来是获取不到 event 对象导致的,这个问题折腾了不少时间,还好现在解决了!

  • 顶一下
    (0)
    0%
    踩一下
    (0)
    0%
乐猪网 版权所有 Copyright © 2012-2015 msoo172.cn All rights reserved.
本站用于学习交流,部分文章来源于网络,如果不慎侵犯了您的权益,请AV视频 我们删除!
粤ICP备12000837号

韩国福利视频2828网