


Lors de la simulation de frappe dans Chrome, pourquoi la mauvaise clé est-elle enregistrée ?
Oct 18, 2024 pm 01:16 PMLa simulation de frappe dans Chrome se déclenche normalement mais pas la bonne clé
La simulation d'événements de frappe sur un élément de zone de texte dans Chrome est essentielle pour des interactions utilisateur personnalisées. Cependant, certaines tentatives peuvent donner des résultats inattendus.
Vous avez tenté de lancer un événement keydown en utilisant initKeyboardEvent avec le keyCode souhaité, mais la zone de texte a fini par enregistrer une valeur de clé incorrecte (Entrée au lieu de la lettre prévue). Une approche alternative impliquant le remplacement de propriété s'est également avérée infructueuse.
Pour résoudre ce problème, vous devez remplacer la propriété « which » en plus de « keyCode ». Voici un exemple de code modifié :
<code class="js">document.addEventListener('keydown', e => console.log( 'altKey : ' + e.altKey + '\n' + 'charCode (Deprecated) : ' + e.charCode + '\n' + 'code : ' + e.code + '\n' + 'ctrlKey : ' + e.ctrlKey + '\n' + 'isComposing : ' + e.isComposing + '\n' + 'key : ' + e.key + '\n' + 'keyCode (Deprecated) : ' + e.keyCode + '\n' + 'location : ' + e.location + '\n' + 'metaKey : ' + e.metaKey + '\n' + 'repeat : ' + e.repeat + '\n' + 'shiftKey : ' + e.shiftKey + '\n' + 'which (Deprecated) : ' + e.which + '\n' + 'isTrusted : ' + e.isTrusted + '\n' + 'type : ' + e.type )); const Podium = {}; Podium.keydown = function(k) { const oEvent = document.createEvent('KeyboardEvent'); // Chromium Hack Object.defineProperty( oEvent, 'keyCode', { get : function() { return this.keyCodeVal; } } ); Object.defineProperty( oEvent, 'which', { get : function() { return this.keyCodeVal; } } ); if (oEvent.initKeyboardEvent) { oEvent.initKeyboardEvent("keydown", true, true, document.defaultView, false, false, false, false, k, k); } else { oEvent.initKeyEvent("keydown", true, true, document.defaultView, false, false, false, false, k, 0); } oEvent.keyCodeVal = k; if (oEvent.keyCode !== k) { alert("keyCode mismatch " + oEvent.keyCode + "(" + oEvent.which + ")"); } document.dispatchEvent(oEvent); } //Sample usage Podium.keydown(65);</code>
En remplaçant à la fois « keyCode » et « which », vous vous assurez que le code de clé correct et la clé correspondante sont enregistrés lors des événements keydown. Cette approche corrige le problème d'enregistrement incorrect des clés et permet des simulations de frappe précises.
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!

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

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

Remplacer les caractères de chaîne en javascript

Tutoriel de configuration de l'API de recherche Google personnalisé

8 Superbes plugins de mise en page JQuery Page

Qu'est-ce que & # x27; ceci & # x27; en javascript?

Créez vos propres applications Web Ajax
