event对象在IE和Firefox下的不同用法IE:可以直接用window.event或event获得event对象,同时可直接用event.x或event.y获得当前操作位置的x和y坐标,当然还有其它属性,如:srcElement,keyCode等Firefox: 不能直接使用window.event和event对象,当然也就不能获得该对象的其它属性.Firefox下获得操作位置坐标的属性是:pageX和pageY; 下面提供同时兼容IE和Firefox的获得event对象的方法,在需要用到event对象的地方,调用该方法即可.
function getEvent() //同时兼容ie和ff的写法
{
if(document.all) return window.event;
func=getEvent.caller;
while(func!=null){
var arg0=func.arguments[0];
if(arg0)
{
if((arg0.constructor==Event || arg0.constructor ==MouseEvent) || (typeof(arg0)=="object" && arg0.preventDefault && arg0.stopPropagation))
{
return arg0;
}
}
func=func.caller;
}
return null;
}如调用:function test() {
var event=getEvent();
if (navigator.appName=='Microsoft Internet Explorer') {
alert(event.x);
}else if (navigator.appName=='Netscape') {
alert(event.pageX);
}
}
function getEvent() //同时兼容ie和ff的写法
{
if(document.all) return window.event;
func=getEvent.caller;
while(func!=null){
var arg0=func.arguments[0];
if(arg0)
{
if((arg0.constructor==Event || arg0.constructor ==MouseEvent) || (typeof(arg0)=="object" && arg0.preventDefault && arg0.stopPropagation))
{
return arg0;
}
}
func=func.caller;
}
return null;
}如调用:function test() {
var event=getEvent();
if (navigator.appName=='Microsoft Internet Explorer') {
alert(event.x);
}else if (navigator.appName=='Netscape') {
alert(event.pageX);
}
}
不过测试代码在opera中不能正常显示。改为:
var __is_ff = (navigator.userAgent.indexOf("Firefox")!=-1);//Firefox
function getMouseLocation(){
e = getEvent();
var mouseX = 0;
var mouseY = 0;if(__is_ff){
mouseX = e.layerX + document.body.scrollLeft;
mouseY = e.layerY + document.body.scrollLeft;
}else{
mouseX = e.x + document.body.scrollLeft;
mouseY = e.y + document.body.scrollTop;
}
return {x:mouseX,y:mouseY};
}function show(){
var test = getMouseLocation();
alert(test.x + ":" + test.y);
}
var _x,_y;
evt = evt || window.event;
if(evt.pageX || evt.pageY){
_x = evt.pageX;
_y = evt.pageY;
}else if(evt.clientX || evt.clientY){
_x = evt.clientX + document.body.scrollLeft - document.body.clientLeft;
_y = evt.clientY + document.body.scrollTop - document.body.clientTop;
}else{
return $.$getAbsPos(evt.target);
}
return {x:_x,y:_y};
};