IE 中可以直接使用 event 对象,而 FF 中则不可以,一般 可以通过以下两种方法满足event 对象需要:
第一种方法:
var theEvent = window.event || arguments.callee.caller.arguments[0];
第二种是将 event 作为参数来传递:
function xxx(e){var theEvent = window.event || e;}
以上两种方法只能用于事发现场,而像这种情况,则不能满足需要,因为它没有事发现场的event,例如:
function click() {
if (event.button==2) {
alert('你想看什麽?')
}
if (event.button==1)
{
alert('你想看作践?');
}
}
document.οnmοusedοwn=click
所以最好的方法就是重构firefox 中的event 对象,如下
<script>
/*firefox*/
function __firefox(){
HTMLElement.prototype.__defineGetter__("runtimeStyle", __element_style);
window.constructor.prototype.__defineGetter__("event", __window_event);
Event.prototype.__defineGetter__("srcElement", __event_srcElement);
}
function __element_style(){
return this.style;
}
function __window_event(){
return __window_event_constructor();
}
function __event_srcElement(){
return this.target;
}
function __window_event_constructor(){
if(document.all){
return window.event;
}
var _caller = __window_event_constructor.caller;
while(_caller!=null){
var _argument = _caller.arguments[0];
if(_argument){
var _temp = _argument.constructor;
if(_temp.toString().indexOf("Event")!=-1){
return _argument;
}
}
_caller = _caller.caller;
}
return null;
}
if(window.addEventListener){
__firefox();
}
/*end firefox*/
</script>