手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >JavaScript高级程序设计 阅读笔记(十八) js跨平台的事件
JavaScript高级程序设计 阅读笔记(十八) js跨平台的事件
摘要:跨平台的事件EventUtil对象EventUtil:复制代码代码如下:varEventUtil={addEventHandler:func...

跨平台的事件EventUtil对象

EventUtil:

复制代码 代码如下:

var EventUtil={

addEventHandler:function(oTarget, sEventType, fnHandler){

if(oTarget.addEventListener){

oTarget.addEventListener(sEventType,fnHandler,false);

} else if(oTarget.attachEvent){

oTarget.attachEvent("on"+sEventType,fnHandler);

} else{

oTarget["on"+sEventType]=fnHandler;

}

},

removeEventHandler:function(oTarget, sEventType, fnHandler){

if(oTarget.removeEventListener){

oTarget.removeEventListener(sEventType,fnHandler);

} else if(oTarget.detachEvent){

oTarget.detachEvent("on"+sEventType,fnHandler);

} else{

oTarget["on"+sEventType]=null;

}

},

formatEvent:function(oEvent){

var isIE=/msie/i.test(navigator.userAgent),

isWin=/win/i.test(navigator.userAgent);

if(isIE && isWin){

oEvent.charCode=(oEvent.type == "keypress")?oEvent.keyCode:0;

oEvent.eventPhase =2;

oEvent.isChar=(oEvent.charCode>0);

oEvent.pageX=oEvent.clientX+document.body.scrollLeft;

oEvent.pageY=oEvent.clientY+document.body.scrollTop;

oEvent.preventDefault=function(){

this.returnvalue=false;

}

if(oEvent.type == "mouseout"){

oEvent.relateTarget=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;

},

getEvent:function(){

if(window.event){

return this.formatEvent(window.event);

}else{

return EventUtil.getEvent.caller.arguments[0];

}

}

}

测试

复制代码 代码如下:

<!DOCTYPE html>

<html>

<head>

<title>Demo</title>

<meta charset="utf-8"/>

<script>

var EventUtil={

addEventHandler:function(oTarget, sEventType, fnHandler){

if(oTarget.addEventListener){

oTarget.addEventListener(sEventType,fnHandler,false);

} else if(oTarget.attachEvent){

oTarget.attachEvent("on"+sEventType,fnHandler);

} else{

oTarget["on"+sEventType]=fnHandler;

}

},

removeEventHandler:function(oTarget, sEventType, fnHandler){

if(oTarget.removeEventListener){

oTarget.removeEventListener(sEventType,fnHandler);

} else if(oTarget.detachEvent){

oTarget.detachEvent("on"+sEventType,fnHandler);

} else{

oTarget["on"+sEventType]=null;

}

},

formatEvent:function(oEvent){

var isIE=/msie/i.test(navigator.userAgent),

isWin=/win/i.test(navigator.userAgent);

if(isIE && isWin){

oEvent.charCode=(oEvent.type == "keypress")?oEvent.keyCode:0;

oEvent.eventPhase =2;

oEvent.isChar=(oEvent.charCode>0);

oEvent.pageX=oEvent.clientX+document.body.scrollLeft;

oEvent.pageY=oEvent.clientY+document.body.scrollTop;

oEvent.preventDefault=function(){

this.returnvalue=false;

}

if(oEvent.type == "mouseout"){

oEvent.relateTarget=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;

},

getEvent:function(){

if(window.event){

return this.formatEvent(window.event);

}else{

return EventUtil.getEvent.caller.arguments[0];

}

}

}

EventUtil.addEventHandler(window,"load",function(){

var oDiv=document.getElementById("div1");

EventUtil.addEventHandler(oDiv,"mouseover",handleEvent);

EventUtil.addEventHandler(oDiv,"mouseout",handleEvent);

EventUtil.addEventHandler(oDiv,"mousedown",handleEvent);

EventUtil.addEventHandler(oDiv,"mouseup",handleEvent);

EventUtil.addEventHandler(oDiv,"click",handleEvent);

EventUtil.addEventHandler(oDiv,"dblclick",handleEvent);

});

function handleEvent(){

var oEvent=EventUtil.getEvent();

var oTextbox=document.getElementById("txt1");

oTextbox.value+="n>"+oEvent.type;

oTextbox.value+="n target is "+oEvent.target.tagName;

if(oEvent.relatedTarget){

oTextbox.value+="n relateTarget is "+oEvent.relatedTarget.tagName;

}

}

</script>

</head>

<body>

<p>Use your mouse to click and double click the red square.</p>

<div id="div1">Test</div>

<p><textarea id="txt1" rows="15" cols="50"></textarea></p>

</body>

</html>

// 0);

oEvent.pageX=oEvent.clientX+document.body.scrollLeft;

oEvent.pageY=oEvent.clientY+document.body.scrollTop;

oEvent.preventDefault=function(){

this.returnvalue=false;

}

if(oEvent.type == "mouseout"){

oEvent.relateTarget=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;

},

getEvent:function(){

if(window.event){

return this.formatEvent(window.event);

}else{

return EventUtil.getEvent.caller.arguments[0];

}

}

}

window.onload=function(){

var oDiv=document.getElementById("div1");

EventUtil.addEventHandler(oDiv,"mouseover",handleEvent);

EventUtil.addEventHandler(oDiv,"mouseout",handleEvent);

EventUtil.addEventHandler(oDiv,"mousedown",handleEvent);

EventUtil.addEventHandler(oDiv,"mouseup",handleEvent);

EventUtil.addEventHandler(oDiv,"click",handleEvent);

EventUtil.addEventHandler(oDiv,"dblclick",handleEvent);

}

function handleEvent(){

var oEvent=EventUtil.getEvent();

var oTextbox=document.getElementById("txt1");

oTextbox.innerHTML+="

>"+oEvent.type;

oTextbox.innerHTML+="

target is "+oEvent.target.tagName;

if(oEvent.relatedTarget){

oTextbox.innerHTML+="

relateTarget is "+oEvent.relatedTarget.tagName;

}

}

// ]]>

Use your mouse to click and double click the red square.

Test

作者:Artwl

出处:http://artwl.cnblogs.com

【JavaScript高级程序设计 阅读笔记(十八) js跨平台的事件】相关文章:

Javascript高级应用:文件操作篇

获取阴历(农历)和当前日期的js代码

简介JavaScript中的setTime()方法的使用

JavaScript中fixed()方法的使用简介

JavaScript中使用自然对数ln的方法

JavaScript实现仿网易通行证表单验证

在JavaScript中使用开平方根的sqrt()方法

JavaScript检查子字符串是否在字符串中的方法

关于JavaScript作用域你想知道的一切

JavaScript容易犯错的九个陷阱

精品推荐
分类导航