JavaScript高级程序设计 阅读笔记(十八) js跨平台的事件_javascript技巧
跨平台的事件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];
}
}
}
测试
<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.
// 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

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

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

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 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.

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.

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.

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 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

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
