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

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Sujets chauds



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

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

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.

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

À 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
