Heim Web-Frontend js-Tutorial 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
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie führe ich eine Datenüberprüfung in C++-Code durch? Wie führe ich eine Datenüberprüfung in C++-Code durch? Nov 04, 2023 pm 01:37 PM

Wie führt man eine Datenüberprüfung für C++-Code durch? Die Datenüberprüfung ist ein sehr wichtiger Teil beim Schreiben von C++-Code. Durch die Überprüfung der vom Benutzer eingegebenen Daten können die Robustheit und Sicherheit des Programms erhöht werden. In diesem Artikel werden einige gängige Methoden und Techniken zur Datenüberprüfung vorgestellt, um Lesern dabei zu helfen, Daten in C++-Code effektiv zu überprüfen. Überprüfung des Eingabedatentyps Bevor Sie die vom Benutzer eingegebenen Daten verarbeiten, prüfen Sie zunächst, ob der Typ der Eingabedaten den Anforderungen entspricht. Wenn Sie beispielsweise ganzzahlige Eingaben vom Benutzer erhalten müssen, müssen Sie sicherstellen, dass die Benutzereingaben korrekt sind

Go Language GUI-Entwicklungshandbuch: Implementierung eines plattformübergreifenden Schnittstellendesigns Go Language GUI-Entwicklungshandbuch: Implementierung eines plattformübergreifenden Schnittstellendesigns Mar 22, 2024 pm 02:00 PM

Als schnelle und effiziente Programmiersprache wird die Go-Sprache häufig in der Backend-Entwicklung verwendet. Mit der kontinuierlichen Weiterentwicklung der Go-Sprache versuchen jedoch immer mehr Entwickler, die Go-Sprache für die Entwicklung von GUI-Schnittstellen im Front-End-Bereich zu verwenden. Dieser Artikel führt Leser in die Verwendung der Go-Sprache für das plattformübergreifende GUI-Schnittstellendesign ein und stellt spezifische Codebeispiele bereit, um den Lesern den Einstieg und die bessere Anwendung zu erleichtern. 1. Einführung in die GUI-Entwicklungs-GUI der Go-Sprache (GraphicalUserInterface für Grafiken)

Go-Skriptsprache: der Charme von Cross-Plattform und Open Source Go-Skriptsprache: der Charme von Cross-Plattform und Open Source Apr 07, 2024 pm 01:09 PM

Go ist eine plattformübergreifende Open-Source-Programmiersprache, die für ihre Einfachheit, Geschwindigkeit und Parallelität bekannt ist. Es wird in einer Vielzahl von Anwendungen eingesetzt, die von einfachen Skripten bis hin zu großen verteilten Systemen reichen. Zu den Hauptvorteilen zählen plattformübergreifende Funktionalität, Open Source, Einfachheit, Geschwindigkeit und Parallelität. Mit Go ist es beispielsweise einfach, einen einfachen HTTP-Server oder gleichzeitigen Crawler zu erstellen.

Wie verbessert das PHP-Framework die Entwicklungseffizienz bei der plattformübergreifenden Entwicklung? Wie verbessert das PHP-Framework die Entwicklungseffizienz bei der plattformübergreifenden Entwicklung? Jun 02, 2024 pm 09:49 PM

Antwort: Bei der plattformübergreifenden Entwicklung verbessert das PHP-Framework die Effizienz, indem es Code wiederverwendbar macht, die Produktivität steigert und die Entwicklungszeit verkürzt. Details: Code wiederverwendbar: Bietet vorgefertigte Komponenten und Klassen, um das wiederholte Schreiben von Code zu reduzieren. Steigern Sie die Produktivität: Automatisieren Sie mühsame Aufgaben wie Datenbankinteraktionen, sodass sich Entwickler auf die Kernfunktionalität konzentrieren können. Schnellere Entwicklungszeit: Vorgefertigte Komponenten und automatisierte Funktionen beschleunigen die Entwicklung, ohne dass der Code von Grund auf neu erstellt werden muss.

Wie erleichtern C++-Funktionen die plattformübergreifende GUI-Entwicklung? Wie erleichtern C++-Funktionen die plattformübergreifende GUI-Entwicklung? Apr 26, 2024 pm 12:18 PM

C++-Funktionen spielen eine wichtige Rolle bei der plattformübergreifenden GUI-Entwicklung und stellen plattformübergreifende APIs zum Erstellen und Verwalten von GUIs bereit. Zu diesen APIs gehören SFML, Qt und GLFW, die allgemeine Funktionen zum Betreiben von Fenstern, Steuerelementen und Ereignissen bereitstellen. Diese Funktionen ermöglichen es Entwicklern, konsistente GUI-Erlebnisse über verschiedene Betriebssysteme hinweg zu erstellen, was die plattformübergreifende Entwicklung vereinfacht und Anwendungen ermöglicht, die nahtlos auf verschiedenen Plattformen laufen.

Zukünftige Trends und Technologieaussichten der plattformübergreifenden PHP-Entwicklung Zukünftige Trends und Technologieaussichten der plattformübergreifenden PHP-Entwicklung Jun 02, 2024 pm 05:29 PM

Trends bei der plattformübergreifenden PHP-Entwicklung: progressive Webanwendungen, responsives Design, Cloud-Computing-Integration. Technologieausblick: Weiterentwicklung des PHP-Frameworks, Integration künstlicher Intelligenz und IoT-Unterstützung. Praxisbeispiel: Laravel erstellt plattformübergreifende progressive Webanwendungen.

Integration von Vue.js und Dart-Sprache, Ideen für die Erstellung plattformübergreifender mobiler Anwendungen Integration von Vue.js und Dart-Sprache, Ideen für die Erstellung plattformübergreifender mobiler Anwendungen Jul 30, 2023 pm 10:33 PM

Integration von Vue.js und Dart-Sprache, Ideen zum Erstellen plattformübergreifender mobiler Anwendungen Im Bereich der Entwicklung mobiler Anwendungen haben plattformübergreifende Entwicklungsframeworks immer mehr Aufmerksamkeit erhalten. Vue.js ist ein JavaScript-Framework zum Erstellen von Benutzeroberflächen, während Dart eine von Google entwickelte Sprache zum Erstellen plattformübergreifender Anwendungen ist. In diesem Artikel wird untersucht, wie man Vue.js in die Dart-Sprache integriert, um plattformübergreifende mobile Anwendungen zu erstellen. 1. Einführung in Vue.js Vue.js gilt als Leichtgewicht

Vergleich von Front-End- und Back-End-Technologie-Stacks und Entwicklungstrends Vergleich von Front-End- und Back-End-Technologie-Stacks und Entwicklungstrends Mar 25, 2024 pm 03:30 PM

Im heutigen Internetzeitalter ist die Entwicklung von Front-End- und Back-End-Technologien entscheidend für den Erfolg von Websites und Anwendungen. Mit der kontinuierlichen Weiterentwicklung und Weiterentwicklung der Technologie werden auch Front-End- und Back-End-Technologien ständig weiterentwickelt und verbessert, um sich an veränderte Marktbedürfnisse und Benutzererfahrungen anzupassen. In diesem Artikel werden die Technologieentwicklungstrends von Front-End und Back-End aus der Perspektive des Technologie-Stacks verglichen und analysiert. 1. Entwicklungstrend des Front-End-Technologie-Stacks Der Front-End-Technologie-Stack bezieht sich auf eine Kombination aus einer Reihe von Technologien und Tools, die zum Erstellen von Benutzeroberflächen für Websites und Anwendungen verwendet werden. Mit der Popularität des mobilen Internets und Cloud Computing

See all articles