


Liaison d'événements JS et analyse de cas de modèle de flux d'événements
Cette fois, je vais vous présenter une analyse de cas de la liaison d'événements JS et du modèle de flux d'événements. Quelles sont les précautions lors de l'utilisation de la liaison d'événements JS et du modèle de flux d'événements. un regard.
1. Événements JS
(1) Classement des événements JS
1. :
click/dbclick/mouseover/mouseout
2. Événements HTML :
onload/onunload/onsubmit/onresize/onchange/onfoucs/onscroll
3. Événements clavier :
keydown : déclenchés lorsque le clavier est enfoncé
keypress : le clavier est enfoncé Et il se déclenche au moment où il est soulevé.
keyup : déclencher lorsque le clavier est relevé
[Notes]
①Séquence d'exécution : keydown keypress keyup
②keypress ne peut capturer que des chiffres, des lettres, des touches de symboles, mais pas les touches de fonction.
③Cycle keydown - une pression prolongée sur la touche
④Keydown n'a pas nécessairement de keyup. Lorsqu'elle est enfoncée longuement, le focus est perdu et la touche keyup ne sera plus déclenchée
⑤keypress est sensible à la casse, keydown et kewup ne le sont pas. différent.
4. Facteur d'événement :
Lorsqu'un événement est déclenché, l'événement transmettra un paramètre à la fonction appelée par l'événement par défaut.
Ce paramètre est un événement. les facteurs comprennent diverses informations détaillées sur l’événement.
document.onkeydown=function(e){ console.log(e); } document.onkeydown=function(){ console.log(window.event); }
//兼容浏览器的写法: document.onkeydown=function(e){ e==e||Window.event; var Code=e.keyCode||e.which||e.charCode; if(code==13){ //回车 } }
5. Comment déterminer les touches du clavier ?
①Dans la fonction de redémarrage, recevez le facteur d'événement e.
②Vous pouvez utiliser e.key pour accéder directement au caractère de touche enfoncé (non recommandé).
③Vous pouvez utiliser keyCode/which/charCode pour obtenir la valeur du code ASCII de la clé.
(compatible avec divers navigateurs)
var Code=e.keyCode||e.which||e.charCode; //判断组合键 var isAlt=0,isEnt=0; document.onkeyup=function(e){ if(e.keyCode==18){ isAlt=1; } if(e.keyCode==13){ isEnt=1; } if(isAlt==1&&isEnt==1){ alert("同时按下Alt和Enter键"); } } document.onkeyup=function(){ console.log("keyup"); } document.onkeypress=function(){ console.log("keypress"); } document.onkeydown=function(){ console.log("keydown"); } document.onkeypress=function(){ console.log(window.event); } //判断是否按下了回车键 document.onkeydown=function(e){ var code=e.keyCode; if(code==13){ alert("你输入的是回车键"); } }
2. ÉvénementModèle de liaison
(1) Modèle d'événement DOM0
Remarques sur la liaison :
①Utilisez window.onload pour effectuer la liaison après le chargement.
window.onload =function(){//事件}
② Placez-le derrière le corps pour le relier.
//body内容 <body> <button onclick="func()">内联模型绑定</button> <button id="btn1">哈哈哈哈</button> <button id="btn2">DOM2模型绑定</button> <button id="btn3">取消DOM2</button> </body>
1. Modèle en ligne (liaison en ligne) : utilisez le nom de la fonction directement comme valeur d'attribut de l'attribut dans la balise html.
<button onclick="func()">内联模型绑定</button>
Inconvénients : Il ne respecte pas les spécifications de base du w3c sur la séparation du contenu et du comportement.
2. Modèle de script (liaison dynamique) : sélectionnez un nœud dans JS puis ajoutez l'attribut onclick au nœud.
document.getElementById("btn1")=function(){}
Avantages : Il est conforme aux spécifications de base du w3c sur la séparation du contenu et du comportement, et réalise la séparation du html et du js.
Inconvénients : un même nœud ne peut ajouter qu'une seule fois des événements du même type. S'il est ajouté plusieurs fois, le dernier prendra effet.
document.getElementById("btn1").onclick=function(){ alert(1234); } document.getElementById("btn1").onclick=function(){ alert(234); }//重复的只能出现最近的一次
3.DOM0 présente un inconvénient commun : les événements liés via DOM0 ne peuvent pas être annulés une fois liés.
document.getElementById("btn3").onclick=function(){//不能取消匿名函数 if(btn.detachEvent){ btn.detachEvent("onclick",func1); }else{ btn.removeEventListener("click",func1); } alert("取消DOM2"); }
(2) Modèle d'événement DOM2
1. Ajoutez une liaison d'événement DOM2 :
①Avant IE8, utilisez .attachEvent("onclick", function);
②Après IE8, utilisez .addEventListener("click", function, true/false);
Paramètre trois : false (par défaut) signifie un bouillonnement d'événement, passer true signifie une capture d'événement.
③Compatible avec toutes les méthodes de traitement du navigateur :
var btn=document.getElementById("btn1"); if(btn.attachEvent){ btn.attachEvent("onclick",func1);//事件,事件需要执行的函数IE8可以 }else{ btn.attachEventListener("click",func1); }
2 Avantages de la liaison DOM2 :
①Le même nœud peut être lié à plusieurs événements du même type à l'aide de DOM2 .
②Les événements liés à l'aide de DOM2 peuvent être annulés avec des fonctions spéciales.
3. Annuler la liaison d'événement :
① Utilisez attachEvent pour lier et utilisez detachevent pour annuler.
②Utilisez attachEventListener pour lier et utilisez removeEventListeter pour annuler.
Remarque : Si l'événement lié à DOM2 doit être annulé, lors de la liaison de l'événement, la fonction de rappel doit être un nom de fonction,
et ne peut pas être une fonction anonyme, car lorsque l'événement est annulée, la fonction de rappel Entrez le nom de la fonction à annuler.
3. Modèle de flux d'événements JS
(1) Modèle de flux d'événements en JS
1. 事件冒泡(fasle/不写):当触发一个节点的事件是,会从当前节点开始,依次触发其祖先节点的同类型事件,直到DOM根节点。
2. 事件捕获(true):当初发一个节点的事件时,会从DOM根节点开始,依次触发其祖先节点的同类型事件,直到当前节点自身。
3. 什么时候事件冒泡?什么时候事件捕获?
① 当使用addEventListener绑定事件,第三个参数传为true时表示事件捕获;
② 除此之外的所有事件绑定均为事件冒泡。
4. 阻止事件冒泡:
① IE10之前,e.cancelBubble = true;
② IE10之后,e.stopPropagation();
5. 阻止默认事件:
① IE10之前:e.returnValue = false;
② IE10之后:e.preventDefault();
//css #p1{ width: 300px;; height: 300px; background-color: powderblue; } #p2{ width: 200px; height: 200px; background-color: deeppink; } #p3{ width: 100px; height: 100px; background-color:#A9A9A9; } //html <p id="p1"> <p id="p2"> <p id="p3"></p> </p> </p> <a href="01-事件笔记.html" rel="external nofollow" onclick="func()">超链接</a> p1.addEventListener("click",function(){ console.log("p1 click"); },false); p2.addEventListener("click",function(){ console.log("p2 click"); },false); p3.addEventListener("click",function(){ //原来的顺序是:3-->2-->1。 // myParagraphEventHandler(); //截获事件流后,只触发3.但是从2开始依然会冒泡; console.log("p3 click"); },false);
结果(事件冒泡)(由小到大p3-》p2-》p1):
p1.addEventListener("click",function(){ console.log("p1 click"); },true); p2.addEventListener("click",function(){ console.log("p2 click"); },true); p3.addEventListener("click",function(){ // myParagraphEventHandler(); //截获事件流后,只触发3.但是从2开始依然会冒泡; console.log("p3 click"); },true);
结果(事件捕获)(由小到大p3-》p2-》p1):
//依然遵循事件冒泡 document.onclick=function(){ console.log("document click") } //截获事件流阻止事件冒泡 function myParagraphEventHandler(e) { e = e || window.event; if (e.stopPropagation) { e.stopPropagation(); //IE10以后 } else { e.cancelBubble = true; //IE10之前 } } //截获事件流阻止事件冒泡 function myParagraphEventHandler(e) { e = e || window.event; if (e.stopPropagation) { e.stopPropagation(); //IE10以后 } else { e.cancelBubble = true; //IE10之前 } } //阻止默认事件 function eventHandler(e) { e = e || window.event; // 防止默认行为 if (e.preventDefault) { e.preventDefault(); //IE10之后 } else { e.returnValue = false; //IE10之前 } }
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

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

Imaginez un modèle d'intelligence artificielle qui non seulement a la capacité de surpasser l'informatique traditionnelle, mais qui permet également d'obtenir des performances plus efficaces à moindre coût. Ce n'est pas de la science-fiction, DeepSeek-V2[1], le modèle MoE open source le plus puissant au monde est ici. DeepSeek-V2 est un puissant mélange de modèle de langage d'experts (MoE) présentant les caractéristiques d'une formation économique et d'une inférence efficace. Il est constitué de 236B paramètres, dont 21B servent à activer chaque marqueur. Par rapport à DeepSeek67B, DeepSeek-V2 offre des performances plus élevées, tout en économisant 42,5 % des coûts de formation, en réduisant le cache KV de 93,3 % et en augmentant le débit de génération maximal à 5,76 fois. DeepSeek est une entreprise explorant l'intelligence artificielle générale

Plus tôt ce mois-ci, des chercheurs du MIT et d'autres institutions ont proposé une alternative très prometteuse au MLP – KAN. KAN surpasse MLP en termes de précision et d’interprétabilité. Et il peut surpasser le MLP fonctionnant avec un plus grand nombre de paramètres avec un très petit nombre de paramètres. Par exemple, les auteurs ont déclaré avoir utilisé KAN pour reproduire les résultats de DeepMind avec un réseau plus petit et un degré d'automatisation plus élevé. Plus précisément, le MLP de DeepMind compte environ 300 000 paramètres, tandis que le KAN n'en compte qu'environ 200. KAN a une base mathématique solide comme MLP est basé sur le théorème d'approximation universelle, tandis que KAN est basé sur le théorème de représentation de Kolmogorov-Arnold. Comme le montre la figure ci-dessous, KAN a

Boston Dynamics Atlas entre officiellement dans l’ère des robots électriques ! Hier, l'Atlas hydraulique s'est retiré "en larmes" de la scène de l'histoire. Aujourd'hui, Boston Dynamics a annoncé que l'Atlas électrique était au travail. Il semble que dans le domaine des robots humanoïdes commerciaux, Boston Dynamics soit déterminé à concurrencer Tesla. Après la sortie de la nouvelle vidéo, elle a déjà été visionnée par plus d’un million de personnes en seulement dix heures. Les personnes âgées partent et de nouveaux rôles apparaissent. C'est une nécessité historique. Il ne fait aucun doute que cette année est l’année explosive des robots humanoïdes. Les internautes ont commenté : Les progrès des robots ont fait ressembler la cérémonie d'ouverture de cette année à des êtres humains, et le degré de liberté est bien plus grand que celui des humains. Mais n'est-ce vraiment pas un film d'horreur ? Au début de la vidéo, Atlas est allongé calmement sur le sol, apparemment sur le dos. Ce qui suit est à couper le souffle

Les performances de JAX, promu par Google, ont dépassé celles de Pytorch et TensorFlow lors de récents tests de référence, se classant au premier rang sur 7 indicateurs. Et le test n’a pas été fait sur le TPU présentant les meilleures performances JAX. Bien que parmi les développeurs, Pytorch soit toujours plus populaire que Tensorflow. Mais à l’avenir, des modèles plus volumineux seront peut-être formés et exécutés sur la base de la plate-forme JAX. Modèles Récemment, l'équipe Keras a comparé trois backends (TensorFlow, JAX, PyTorch) avec l'implémentation native de PyTorch et Keras2 avec TensorFlow. Premièrement, ils sélectionnent un ensemble de

L’IA change effectivement les mathématiques. Récemment, Tao Zhexuan, qui a prêté une attention particulière à cette question, a transmis le dernier numéro du « Bulletin de l'American Mathematical Society » (Bulletin de l'American Mathematical Society). En se concentrant sur le thème « Les machines changeront-elles les mathématiques ? », de nombreux mathématiciens ont exprimé leurs opinions. L'ensemble du processus a été plein d'étincelles, intense et passionnant. L'auteur dispose d'une équipe solide, comprenant Akshay Venkatesh, lauréat de la médaille Fields, le mathématicien chinois Zheng Lejun, l'informaticien de l'Université de New York Ernest Davis et de nombreux autres universitaires bien connus du secteur. Le monde de l’IA a radicalement changé. Vous savez, bon nombre de ces articles ont été soumis il y a un an.

La détection de cibles est un problème relativement mature dans les systèmes de conduite autonome, parmi lesquels la détection des piétons est l'un des premiers algorithmes à être déployés. Des recherches très complètes ont été menées dans la plupart des articles. Cependant, la perception de la distance à l’aide de caméras fisheye pour une vue panoramique est relativement moins étudiée. En raison de la distorsion radiale importante, la représentation standard du cadre de délimitation est difficile à mettre en œuvre dans les caméras fisheye. Pour alléger la description ci-dessus, nous explorons les conceptions étendues de boîtes englobantes, d'ellipses et de polygones généraux dans des représentations polaires/angulaires et définissons une métrique de segmentation d'instance mIOU pour analyser ces représentations. Le modèle fisheyeDetNet proposé avec une forme polygonale surpasse les autres modèles et atteint simultanément 49,5 % de mAP sur l'ensemble de données de la caméra fisheye Valeo pour la conduite autonome.

La dernière vidéo du robot Optimus de Tesla est sortie, et il peut déjà fonctionner en usine. À vitesse normale, il trie les batteries (les batteries 4680 de Tesla) comme ceci : Le responsable a également publié à quoi cela ressemble à une vitesse 20 fois supérieure - sur un petit "poste de travail", en sélectionnant et en sélectionnant et en sélectionnant : Cette fois, il est publié L'un des points forts de la vidéo est qu'Optimus réalise ce travail en usine, de manière totalement autonome, sans intervention humaine tout au long du processus. Et du point de vue d'Optimus, il peut également récupérer et placer la batterie tordue, en se concentrant sur la correction automatique des erreurs : concernant la main d'Optimus, le scientifique de NVIDIA Jim Fan a donné une évaluation élevée : la main d'Optimus est l'un des robots à cinq doigts du monde. le plus adroit. Ses mains ne sont pas seulement tactiles

1. Introduction Au cours des dernières années, les YOLO sont devenus le paradigme dominant dans le domaine de la détection d'objets en temps réel en raison de leur équilibre efficace entre le coût de calcul et les performances de détection. Les chercheurs ont exploré la conception architecturale de YOLO, les objectifs d'optimisation, les stratégies d'expansion des données, etc., et ont réalisé des progrès significatifs. Dans le même temps, le recours à la suppression non maximale (NMS) pour le post-traitement entrave le déploiement de bout en bout de YOLO et affecte négativement la latence d'inférence. Dans les YOLO, la conception de divers composants manque d’une inspection complète et approfondie, ce qui entraîne une redondance informatique importante et limite les capacités du modèle. Il offre une efficacité sous-optimale et un potentiel d’amélioration des performances relativement important. Dans ce travail, l'objectif est d'améliorer encore les limites d'efficacité des performances de YOLO à la fois en post-traitement et en architecture de modèle. à cette fin
