JScript code

/*
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的解析不一样的问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值