function t(event){ 
event = (event)?event:window.event; 
... 
}
<body onmousedown="t(event)">
知道这是为了兼容浏览器 但不知道是为什么
谁能解释一下?越详细越好

解决方案 »

  1.   

    http://www.dezai.cn/article_print.asp?articleId=14638
      

  2.   

    IE中可以直接使用event对象,但是Mozilla不可以直接使用。例如:  
     IE ONLY            
     <input type="button" value="clickMe" onclick="doIt()">  
     <script language="javascript">      
         function doIt(){      
             alert(event);      
         }      
     </script>       这段代码在Mozilla浏览器中是不能正常工作的,因为Mozilla浏览器中没有默认的event对象,只能在事件发生的现场使用。 
    下面看一下两者都兼容的代码: 
     <input type="button" value="clickMe" onclick="doIt(event)">  
     <script language="javascript">      
         function doIt(oEvent){      
             alert(oEvent);      
         }      
     </script>综上所述,为了进一步无缝合并,采用了
    event = (event)?event:window.event; 
    这种写法。
      

  3.   

    还是不明白
    LxcJie,既然 
    <input type="button" value="clickMe" onclick="doIt(event)">  
     <script language="javascript">      
         function doIt(oEvent){      
             alert(oEvent);      
         }      
     </script>
    可以做到二者兼容,为什么还要写成这样
    function tracking(e){
     e = e ? e : window.event;
      

  4.   

    e=e?e:window.event
    这句的意思可能不是有人说的 为了浏览器兼容
    看这段代码,IE6.0
    <body >
    clickMe
    </body>
    <script language="javascript" type="text/javascript">
    document.body.onclick = function(){
    alert(event);
    }
    </script>
    当单击页面上的文字“clickMe”时 和 单击 空白区域时 弹出的对话框不同这是为什么
      

  5.   

    aa = event? event :window.event ;你在网页中就可以直接用aa代表event或者 window.event这样不就是做到兼容了吗!
      

  6.   

    event = (event)?event:window.event; 
    可以改成这种写法:
    event=event||window.event
      

  7.   


    firefox 和 ie 事件处理的细节,研究,再研究-----书写同时兼容ie和ff的事件处理代码http://www.cnblogs.com/ashun/archive/2006/11/27/event_javascript_ie_firefox_gorush.html
      

  8.   

    e=e?e:window.event
    这句的意思可能不是有人说的 为了浏览器兼容
    看这段代码,IE6.0
    <body >
    clickMe
    </body>
    <script language="javascript" type="text/javascript">
    document.body.onclick = function(){
    alert(event);
    }
    </script>
    当单击页面上的文字“clickMe”时 和 单击 空白区域时 弹出的对话框不同这是为什么
    ////////////////////////////////////////////////////////////////////////////////
    作废 作废
      

  9.   

    ie中  window.event 与 event 有什么区别?
      

  10.   


    ie中 window.event 与 event 有什么区别?
    没有区别
      

  11.   

    参照各位高手的
    自己总结了一下
    看下面代码:
    <body onkeypress="t(event)">
    </body>
    <script>
    function t(e)
    {
       alert(e);
    }
    </script>
    在IE,FF 中都能运行。也就是说这样已经实现了浏览器兼容。
      

  12.   

    那么为什么还要加上这句代码呢?这是为了兼容不同的函数调用方法,看这段代码:
    <body>
    </body>
    <script>
    function t(e)
    {
      alert(e);// IE:undefined    FF: [object]
    }
    document.body.onkeypress=t;//注意这里没有人为传入任何参数
    </script>
    这段代码在IE 下没有获得参数e,显示undefined。在FF下能够得到参数e,显示[object].
    这是因为
    在ie中,事件对象是作为一个全局变量来保存和维护的。 所有的浏览器事件,不管是用户触发的,还是其他事件, 都会更新window.event 对象。 所以在代码中,只要轻松调用 window.event就可以轻松获取 事件对象, 再 event.srcElement 就可以取得触发事件的元素进行进一步处理
    在ff中, 事件对象却不是全局对象,一般情况下,是现场发生,现场使用,ff把事件对象自动传递给对应的事件处理函数。在代码中,对应的事件处理函数的第一个参数就是ff下的事件对象了。可以用下面的代码证实,
    <body>
    </body>
    <script>
    function t()
    {
      alert(arguments[0]);// ff下显示 "[object]", ie下,显示  "undefined",  
    }
    document.body.onkeypress=t;
    </script>那么,要兼容浏览器和调用方法,可以修改函数,如下:
    function t(e)
    {
     e=e?e:window.event;    
     alert(e);// 
    }
    在ff下不论哪种调用方法传入函数的参数e 总是有效的,表示当前触发的event,
    在ie下 本文开头的第一种调用方法(<body onkeypress="t(event)">)传入的参数e也是有效的,表示当前触发的event。第二种调用方法(document.body.onkeypress=t;)传入的参数e是无效的。由上可以推断出 只要传入的参数e是无效的那么浏览器一定是ie。ie浏览器中用window.event 对象表示事件对象。