首页 web前端 js教程 JavaScript高级程序设计 阅读笔记(十八) js跨平台的事件_javascript技巧

JavaScript高级程序设计 阅读笔记(十八) js跨平台的事件_javascript技巧

May 16, 2016 pm 05:50 PM
跨平台

跨平台的事件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];
}
}
}

测试
复制代码 代码如下:




Demo

<script> <BR>var EventUtil={ <BR>addEventHandler:function(oTarget, sEventType, fnHandler){ <BR>if(oTarget.addEventListener){ <BR>oTarget.addEventListener(sEventType,fnHandler,false); <BR>} else if(oTarget.attachEvent){ <BR>oTarget.attachEvent("on"+sEventType,fnHandler); <BR>} else{ <BR>oTarget["on"+sEventType]=fnHandler; <BR>} <BR>}, <BR>removeEventHandler:function(oTarget, sEventType, fnHandler){ <BR>if(oTarget.removeEventListener){ <BR>oTarget.removeEventListener(sEventType,fnHandler); <BR>} else if(oTarget.detachEvent){ <BR>oTarget.detachEvent("on"+sEventType,fnHandler); <BR>} else{ <BR>oTarget["on"+sEventType]=null; <BR>} <BR>}, <BR>formatEvent:function(oEvent){ <BR>var isIE=/msie/i.test(navigator.userAgent), <BR>isWin=/win/i.test(navigator.userAgent); <BR>if(isIE && isWin){ <BR>oEvent.charCode=(oEvent.type == "keypress")?oEvent.keyCode:0; <BR>oEvent.eventPhase =2; <BR>oEvent.isChar=(oEvent.charCode>0); <BR>oEvent.pageX=oEvent.clientX+document.body.scrollLeft; <BR>oEvent.pageY=oEvent.clientY+document.body.scrollTop; <BR>oEvent.preventDefault=function(){ <BR>this.returnvalue=false; <BR>} <BR>if(oEvent.type == "mouseout"){ <BR>oEvent.relateTarget=oEvent.toElement; <BR>}else if(oEvent.type=="mouseover"){ <BR>oEvent.relatedTarget=oEvent.fromElement; <BR>} <BR>oEvent.stopPropagation=function(){ <BR>this.cancelBubble=true; <BR>} <BR>oEvent.target=oEvent.srcElement; <BR>oEvent.time=(new Date()).getTime(); <BR>} <BR>return oEvent; <BR>}, <BR>getEvent:function(){ <BR>if(window.event){ <BR>return this.formatEvent(window.event); <BR>}else{ <BR>return EventUtil.getEvent.caller.arguments[0]; <BR>} <BR>} <BR>} <BR>EventUtil.addEventHandler(window,"load",function(){ <BR>var oDiv=document.getElementById("div1"); <BR>EventUtil.addEventHandler(oDiv,"mouseover",handleEvent); <BR>EventUtil.addEventHandler(oDiv,"mouseout",handleEvent); <BR>EventUtil.addEventHandler(oDiv,"mousedown",handleEvent); <BR>EventUtil.addEventHandler(oDiv,"mouseup",handleEvent); <BR>EventUtil.addEventHandler(oDiv,"click",handleEvent); <BR>EventUtil.addEventHandler(oDiv,"dblclick",handleEvent); <BR>}); <BR>function handleEvent(){ <BR>var oEvent=EventUtil.getEvent(); <BR>var oTextbox=document.getElementById("txt1"); <BR>oTextbox.value+="\n>"+oEvent.type; <BR>oTextbox.value+="\n target is "+oEvent.target.tagName; <BR>if(oEvent.relatedTarget){ <BR>oTextbox.value+="\n relateTarget is "+oEvent.relatedTarget.tagName; <BR>} <BR>} <BR></script>


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


Test




// 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
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
2 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何进行C++代码的数据校验? 如何进行C++代码的数据校验? Nov 04, 2023 pm 01:37 PM

如何进行C++代码的数据校验?在编写C++代码时,数据校验是非常重要的一环。通过对用户输入的数据进行校验,可以增强程序的健壮性和安全性。本文将介绍一些常见的数据校验方法和技巧,帮助读者有效地进行C++代码的数据校验。输入数据类型检查在对用户输入的数据进行处理之前,首先要检查输入数据的类型是否符合要求。例如,如果需要接收用户的整数输入,那么需要确保用户输入的是

Go语言GUI开发指南:实现跨平台界面设计 Go语言GUI开发指南:实现跨平台界面设计 Mar 22, 2024 pm 02:00 PM

Go语言作为一种快速、高效的编程语言,在后端开发中得到了广泛应用。不过,随着Go语言的不断发展,越来越多的开发者开始尝试在前端领域使用Go语言进行GUI界面开发。本文将为读者介绍如何利用Go语言进行跨平台的GUI界面设计,并提供具体的代码示例来帮助读者更好地入门和应用。一、Go语言GUI开发简介GUI(GraphicalUserInterface,图形用

Go 脚本语言:跨平台和开源的魅力 Go 脚本语言:跨平台和开源的魅力 Apr 07, 2024 pm 01:09 PM

Go是一种开源、跨平台编程语言,因其简洁性、速度和并发性而闻名。它在从简单脚本到大型分布式系统的各种应用程序中得到广泛应用。其主要优势包括跨平台、开源、简洁、速度和并发性。例如,使用Go可以轻松构建简单的HTTP服务器或并发爬虫。

PHP框架在跨平台开发中如何提升开发效率? PHP框架在跨平台开发中如何提升开发效率? Jun 02, 2024 pm 09:49 PM

答案:PHP框架在跨平台开发中,通过代码可重用、提高生产力、缩短开发时间来提升效率。详情:代码可重用:提供预先构建的组件和类,减少重复代码编写。提高生产力:自动化繁琐任务,如数据库交互,让开发者专注于核心功能。更快的开发时间:预建组件和自动化功能加快开发,无需从头开始编写代码。

C++ 函数如何促进跨平台 GUI 开发? C++ 函数如何促进跨平台 GUI 开发? Apr 26, 2024 pm 12:18 PM

C++函数在跨平台GUI开发中发挥着至关重要的作用,提供跨平台API来创建和管理GUI。这些API包括SFML、Qt和GLFW,提供通用函数来操作窗口、控件和事件。这些函数允许开发者在不同操作系统上构建一致的GUI体验,简化了多平台开发,并实现了在各种平台上无缝运行的应用程序。

PHP跨平台开发的未来趋势与技术展望 PHP跨平台开发的未来趋势与技术展望 Jun 02, 2024 pm 05:29 PM

PHP跨平台开发趋势:渐进式Web应用、响应式设计、云计算集成。技术展望:PHP框架持续发展、人工智能整合、物联网支持。实战案例:Laravel构建跨平台渐进式Web应用。

Vue.js与Dart语言的集成,构建跨平台移动应用的思路 Vue.js与Dart语言的集成,构建跨平台移动应用的思路 Jul 30, 2023 pm 10:33 PM

Vue.js与Dart语言的集成,构建跨平台移动应用的思路在移动应用开发领域,跨平台的开发框架得到了越来越多的关注。Vue.js是一种用于构建用户界面的JavaScript框架,而Dart语言是由Google开发的一种用于构建跨平台应用的语言。本文将探讨如何将Vue.js与Dart语言集成,以构建跨平台移动应用。一、Vue.js简介Vue.js被认为是一种轻

前端与后端技术栈及发展趋势对比 前端与后端技术栈及发展趋势对比 Mar 25, 2024 pm 03:30 PM

在当今的互联网时代,前端与后端技术的发展对于网站和应用程序的成功至关重要。随着技术的不断进步和发展,前端与后端技术也在不断演变和完善,以适应不断变化的市场需求和用户体验。本文将从技术栈的角度出发,对前端与后端的技术发展趋势进行比较和分析。一、前端技术栈的发展趋势前端技术栈是指用于构建网站和应用程序用户界面的一系列技术和工具的组合。随着移动互联网的普及和云计算

See all articles