Maison interface Web js tutoriel 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
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Où trouver la courte de la grue à atomide atomique
1 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment effectuer la vérification des données dans le code C++ ? Comment effectuer la vérification des données dans le code C++ ? Nov 04, 2023 pm 01:37 PM

Comment effectuer la vérification des données sur du code C++ ? La vérification des données est une partie très importante lors de l'écriture de code C++. En vérifiant les données saisies par l'utilisateur, la robustesse et la sécurité du programme peuvent être améliorées. Cet article présentera quelques méthodes et techniques courantes de vérification des données pour aider les lecteurs à vérifier efficacement les données dans le code C++. Vérification du type de données d'entrée Avant de traiter les données saisies par l'utilisateur, vérifiez d'abord si le type des données d'entrée répond aux exigences. Par exemple, si vous devez recevoir une entrée entière de la part de l'utilisateur, vous devez vous assurer que l'entrée utilisateur est

Mar 22, 2024 pm 02:00 PM

En tant que langage de programmation rapide et efficace, le langage Go a été largement utilisé dans le développement back-end. Cependant, avec le développement continu du langage Go, de plus en plus de développeurs commencent à essayer d'utiliser le langage Go pour le développement d'interfaces GUI dans le domaine front-end. Cet article présentera aux lecteurs comment utiliser le langage Go pour la conception d'interfaces GUI multiplateformes et fournira des exemples de code spécifiques pour aider les lecteurs à démarrer et à mieux l'appliquer. 1. Introduction à l'interface graphique de développement du langage Go (GraphicalUserInterface, pour les graphiques)

Go langage de script : le charme du multiplateforme et de l'open source Go langage de script : le charme du multiplateforme et de l'open source Apr 07, 2024 pm 01:09 PM

Go est un langage de programmation open source multiplateforme connu pour sa simplicité, sa rapidité et sa concurrence. Il est utilisé dans un large éventail d'applications allant des simples scripts aux grands systèmes distribués. Ses principaux avantages incluent le multiplateforme, l’open source, la simplicité, la vitesse et la concurrence. Par exemple, Go facilite la création d'un simple serveur HTTP ou d'un robot d'exploration simultané.

Comment les fonctions C++ facilitent-elles le développement d'interfaces graphiques multiplateformes ? Comment les fonctions C++ facilitent-elles le développement d'interfaces graphiques multiplateformes ? Apr 26, 2024 pm 12:18 PM

Les fonctions C++ jouent un rôle essentiel dans le développement d'interfaces graphiques multiplateformes, en fournissant des API multiplateformes pour créer et gérer des interfaces graphiques. Ces API incluent SFML, Qt et GLFW, qui fournissent des fonctions communes pour faire fonctionner les fenêtres, les contrôles et les événements. Ces fonctions permettent aux développeurs de créer des expériences GUI cohérentes sur différents systèmes d'exploitation, simplifiant ainsi le développement multiplateforme et permettant aux applications de s'exécuter de manière transparente sur diverses plates-formes.

Comment le framework PHP améliore-t-il l'efficacité du développement dans le développement multiplateforme ? Comment le framework PHP améliore-t-il l'efficacité du développement dans le développement multiplateforme ? Jun 02, 2024 pm 09:49 PM

Réponse : Dans le développement multiplateforme, le framework PHP améliore l'efficacité en rendant le code réutilisable, en améliorant la productivité et en raccourcissant le temps de développement. Détails : Code réutilisable : fournit des composants et des classes prédéfinis pour réduire l'écriture de code répétitive. Augmentez la productivité : automatisez les tâches fastidieuses telles que les interactions avec les bases de données, permettant ainsi aux développeurs de se concentrer sur les fonctionnalités de base. Temps de développement plus rapide : les composants prédéfinis et les fonctionnalités automatisées accélèrent le développement sans avoir à coder à partir de zéro.

Tendances futures et perspectives technologiques du développement multiplateforme PHP Tendances futures et perspectives technologiques du développement multiplateforme PHP Jun 02, 2024 pm 05:29 PM

Tendances de développement multiplateforme PHP : applications Web progressives, conception réactive, intégration du cloud computing. Perspectives technologiques : développement continu du framework PHP, intégration de l'intelligence artificielle et prise en charge de l'IoT. Cas pratique : Laravel construit des applications Web progressives multiplateformes.

Intégration du langage Vue.js et Dart, idées pour créer des applications mobiles multiplateformes Intégration du langage Vue.js et Dart, idées pour créer des applications mobiles multiplateformes Jul 30, 2023 pm 10:33 PM

Intégration des langages Vue.js et Dart, idées pour créer des applications mobiles multiplateformes Dans le domaine du développement d'applications mobiles, les frameworks de développement multiplateformes ont reçu de plus en plus d'attention. Vue.js est un framework JavaScript permettant de créer des interfaces utilisateur, tandis que Dart est un langage développé par Google pour créer des applications multiplateformes. Cet article explorera comment intégrer Vue.js au langage Dart pour créer des applications mobiles multiplateformes. 1. Introduction à Vue.js Vue.js est considéré comme un outil léger

Comparaison des piles technologiques front-end et back-end et des tendances de développement Comparaison des piles technologiques front-end et back-end et des tendances de développement Mar 25, 2024 pm 03:30 PM

À l’ère d’Internet d’aujourd’hui, le développement des technologies front-end et back-end est crucial pour le succès des sites Web et des applications. Avec l'avancement et le développement continus de la technologie, les technologies front-end et back-end évoluent et s'améliorent également constamment pour s'adapter à l'évolution des besoins du marché et de l'expérience utilisateur. Cet article comparera et analysera les tendances de développement technologique du front-end et du back-end du point de vue de la pile technologique. 1. Tendance de développement de la pile technologique frontale La pile technologique frontale fait référence à une combinaison d'une série de technologies et d'outils utilisés pour créer des interfaces utilisateur pour les sites Web et les applications. Avec la popularité de l'Internet mobile et du cloud computing

See all articles