第一种情况
   一个页面中。有这样的html
  <a href="#" id="divid" >点击</a>
  在Js里面用
document.getElementById("divid").onclick = function(e){
var e = e || event;
alert(typeof(e));
}
能得到e为对象在ff和ie是正常的
我理解是。function (e)这里e是自带的参数,系统默认,为对象第二种情况
<a href="#" id="divid" onclick="fun()">点击</a>
  在Js里面
function fun(){
var e = event || e ;
alert(typeof(e));
}在ie里面是正常的。但是在ff里面不正常的。这个是为什么呢?我就是想要实现。第二种方法中。得到事件对象e要如何实现?还有就是第一种情况的function(e)这里的参数的理论理解是怎么样的?

解决方案 »

  1.   

    你用Jquery这些问题其实就都解决了
      

  2.   

    第二种情况
    <a href="#" id="divid" onclick="fun(//在火狐下必须写参数,而且必须是event)">点击</a>//是不能和第一种情况一样写e的
      

  3.   

    IE中window.event与event等价,所以下面的代码在IE下可以正常运行
    var e = event || e ;
    alert(typeof(e));如果想获取事件对象,可以用下面的方法:function getEvent() {
    var evt = arguments[0] || window.event;

    if(!evt && !window.ActiveXObject) {
    var c = getEvent.caller, count = 1;
    while (c)
    {
    evt = c.arguments[0];
    if ( evt && Event == evt.constructor)
    {
    break;
    } else if(count > 32) {
    break;
    } c = c.caller;
    count++;
    }
    } return evt;
    }
    找到调用getEvent的函数,然后获取其第一个参数,为了避免陷入死循环,用了count计数。
      

  4.   

    第二种情况
    <a href="#" id="divid" onclick="fun(//在火狐下必须写参数,而且必须是event)">点击</a>//是不能和第一种情况一样写e的
      

  5.   

    ff是要传参的。在AJAX中也是这样的。像那个send(null)就算没有参数也要传一个空。
      

  6.   


    第二种情况
    <a href="#" id="divid" onclick="fun()">点击</a>
      在Js里面
    function fun(){
    var e = event || window.event;//这样就行了,最好在onclick="fun(event)" function fun(e) 传递个参数更好
    alert(typeof(e));
    }
      

  7.   


    要理解浏览器真的工作原理。
    如果一直用jquery,不了解基本工作原理。没用
      

  8.   

    原理很简单,这些就是一些cross browser的问题,主要是如果你想学习,你可以去研究
    如果是做开发,就别浪费这是时间了,有空钻研这个,不如去钻研点别的