请教:火狐浏览器如何读事件源的类型名称?下面函数在IE下正常,但是在FF下srcElement.tagName名称读取不到?
也就是FF可能不支持tagName属性?
这问题如何解决啊?谢了。
WatchClick = function(params) {
     
            var event = window.event, srcElement;
            srcElement = event.target || event.srcElement;            //alert(srcElement.nodeName);
            
            // 检查对象类型: 用户行为调查主要是针对链接/图片/输入框/选择框 有效
            if (srcElement.tagName == "A" || srcElement.tagName == "IMG" || srcElement.tagName == "INPUT" || srcElement.tagName == "SELECT") {
                
                var hottag = "";
                switch (srcElement.tagName) {
                    case "A":
                        hottag = "<A href=" + srcElement.href + ">" + srcElement.innerHTML + "</a>";
                        break;
                    case "IMG":
                        hottag = "<IMG src=" + srcElement.src + ">"; break;
                    case "INPUT":
                        hottag = "<INPUT type=" + srcElement.type + " value=" + srcElement.value + ">";
                        break;
                    case "SELECT":
                        hottag = "SELECT";
                        break;
                }
...
}

解决方案 »

  1.   


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
    <html xmlns="http://www.w3.org/1999/xhtml">  
     <head>  
      <title>如何获取事件触发源(兼容IE和FireFox)</title>  
      <meta name="generator" content="editplus" />  
      <meta name="author" content="" />  
      <meta name="keywords" content="" />  
      <meta name="description" content="" />  
      <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=gb2312">
      <script type="text/javascript">  
    function ClickMe(e)  
    {  
     var src = e.target || window.event.srcElement;  
     alert(src.tagName);  
    }  
    function ClickMe2()  
    {  
     var e = arguments[0] || window.event;  
     var src = e.srcElement || e.target; // src 就是事件的触发源  
     alert(src.tagName);  
    }  
    </script>   
     </head>  
      
     <body>  
      <button onclick="ClickMe(event)">测试</button>  
      <button onclick="ClickMe2(event)">测试2</button>  
      
     </body>  
    </html> 
      

  2.   

    W3C标准,event是从事件句柄中以参数形式传递进来的。类似于观察者模式
    所以,onclick事件
    句柄如果为onclick=doClick();
    那么doClick函数的第一个参数必为event而IE,则是把事件保存在window.event中
    对于特殊的Chrome,则两种都支持。
    所以全浏览器兼容的代码应该是这样写的
    <input type="button" onclick="doClick(event);">
    function doClick(e) {
        var event = e || window.event;
        var srcElement = e.target || e.srcElement;
    }