你所谓的第二种,也就是兼容写法实际上是下面这样的:
event = event? event: window.event;
//或者像下面的是等价的
event = event || window.event;
}
老版本IE,事件对象放到了全局命名空间下。也就是window属性上。而标准浏览器的事件对象是注入的。也就是方法的参数event。参数是注入的,所以参数名你可以随便起。上面叫做event。你也可以叫做ev,也可以叫做ev123.只要符合变量名的规范就可以了。
因此,你要明白,老版本IE的事件模式跟标准事件之间的区别是什么。跟变量名本身是没有关系的。而是跟事件对象的来源有关。
再重申一下。旧版IE浏览器的事件对象注册到了window对象中。标准事件模型中,事件对象是注入到了事件方法的参数中。