/*
Copyright VaChina Inc.
2008-8-10
-----------------------------*/
/*检测浏览器/操作系统类型
-----------------------------start-------------------------------------*/
var sUserAgent = navigator.userAgent;
var fAppVersion = parseFloat(navigator.appVersion);
//检测是否Opera浏览器
var isOpera = sUserAgent.indexOf("Opera")>-1;
//检测是否Safari
var isKHTML = sUserAgent.indexOf("KHTML")>-1
|| sUserAgent.indexOf("Konqueror")>-1
|| sUserAgent.indexOf("AppleWebKit")>-1;
//检测IE
var isIE = sUserAgent.indexOf("compatible") > -1
&&sUserAgent.indexOf("MSIE") > -1
&&!isOpera;
//检测Firfox
var isFF = sUserAgent.indexOf("Firefox")>-1&&!isKHTML;
//检测Mozilla
var isMoz = sUserAgent.indexOf("Gecko")>-1&&!isKHTML;
var isNS4 = !isIE&&!isOpera&&!isMoz&&!isKHTML
&&(sUserAgent.indexOf("Mozilla")==0)
&&(navigator.appName == "Netscape")
&&(fAppVersion >= 4.0 && fAppVersion <5.0);
//检测操作系统
var isWin = (navigator.platform == "Win32") || (navigator.platform == "Windows");
var isMac = (navigator.platform == "Mac68K") || (navigator.platform == "MacPPC")
|| (navigator.platform == "Macintosh");
var isUnix = (navigator.platform == "X11" && !isWin && !isMac);
/*
----------------------------- end -------------------------------------*/
var Utils = new Object;
//首先定义addEventHandler()方法,用来代替IE与其它浏览器中的事件处理函数
//参数一:要分配事件处理的对象;参数二:处理的事件名称;参数三:要分配的函数
Utils.addEventHandler=function(oTarget,sEventType,fnHandler){
if(oTarget.addEventListener){//DOM兼容浏览器
oTarget.addEventListener(sEventType,fnHandler,false);
}else if(oTarget.attachEvent){//IE
oTarget.attachEvent("on" + sEventType,fnHandler);
}else{//其它
oTarget["on" + sEventType] = fnHandler;
}
};
//删除的方法
Utils.delEventHandler=function(oTarget,sEventType,fnHandler){
if(oTarget.removeEventListener){//DOM兼容浏览器
oTarget.removeEventListener(sEventType,fnHandler,false);
}else if(oTarget.detachEvent){//IE
oTarget.detachEvent("on" + sEventType,fnHandler);
}else{//其它
oTarget["on" + sEventType] = null;
}
};
//格式化event对象
Utils.formatEvent = function(oEvent){
if(isIE&&isWin){
//当事件keypress发生时,为IE创建charCode属性
oEvent.charCode=(oEvent.type=="keypress")?oEvent.keyCode:0;
//由于IE仅支持冒泡阶段,因此将eventPhase的值设置为2
oEvent.eventPhase=2;
oEvent.isChar = (oEvent.charCode>0);//按键是否有字符与之相关
//为IE创建pageX、pageY属性
var scrollX=0;
var scrollY=0;
if(document.all){
if(!document.documentElement.scrollLeft)
scrollX=document.body.scrollLeft;
else
scrollX=document.documentElement.scrollLeft;
if(!document.documentElement.scrollTop)
scrollY=document.body.scrollTop;
else
scrollY=document.documentElement.scrollTop;
}
else{
scrollX=window.pageXOffset;
scrollY=window.pageYOffset;
}
oEvent.scrollX=scrollX;
oEvent.scrollY=scrollY;
oEvent.pageX=oEvent.clientX+scrollX;
oEvent.pageY=oEvent.clientY+scrollY;
oEvent.preventDefault=function(){this.returnvalue=false;};
if(oEvent.type=="mouseout")
oEvent.relatedTarget=oEvent.toElement;
else if(oEvent.type=="mouseover")
oEvent.relatedTarget=oEvent.fromElement;
oEvent.stopPropagation=function(){this.cancelBubble=true;};
oEvent.target=oEvent.srcElement;
oEvent.time=(new Date()).getTime();
}
return oEvent;
};
//获取event的方法
Utils.getEvent=function(event){
if(window.event)
return Utils.formatEvent(window.event);
else
return Utils.getEvent.caller.arguments[0];
};
//调用的时候
var oEvent = Utils.getEvent();
alert("X:" + oEvent.pageX + "/nY:" + oEvent.pageY);
//你的情况是由IE的解析机制引起的,用上面的代码可以纠正大部分IE与其它浏览器对javascript的解析不一样的问题
JScript code
最新推荐文章于 2025-05-14 14:41:23 发布