Maison >interface Web >js tutoriel >Comment simuler des événements de clavier dans Safari avec le bon code clé ?

Comment simuler des événements de clavier dans Safari avec le bon code clé ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-23 02:17:09865parcourir

How to Simulate Keyboard Events in Safari with the Correct Keycode?

Comment distribuer un événement de clavier dans Safari à l'aide de JavaScript

En JavaScript, la simulation d'événements de clavier peut s'avérer problématique, en particulier dans Safari. Ce problème survient lorsque vous tentez de définir un code clé spécifique ou des propriétés dans votre objet événement. Au lieu de cela, ces propriétés sont définies par défaut sur 0, ce qui entrave l'exécution transparente de votre logique de simulation d'événements.

Pour résoudre ce problème, une solution fiable consiste à utiliser le polyfill DOM Keyboard Event Level 3. En implémentant ce polyfill, vous pouvez tirer parti d'une syntaxe améliorée qui vous permet de définir directement les propriétés key, char et shiftKey. De plus, il prend en charge la définition de propriétés héritées telles que « keyCode », « charCode » et « which », offrant une compatibilité avec les anciens navigateurs :

element.addEventListener("keydown", function(e){ console.log(e.key, e.char, e.keyCode) })

var e = new KeyboardEvent("keydown", {bubbles : true, cancelable : true, key : "Q", char : "Q", shiftKey : true});
element.dispatchEvent(e);

//If you need legacy property "keyCode"
// Note: In some browsers you can't overwrite "keyCode" property. (At least in Safari)
delete e.keyCode;
Object.defineProperty(e, "keyCode", {"value" : 666})

En tirant parti du polyfill, vous pouvez désormais distribuer efficacement les événements de clavier. avec les valeurs keyCode souhaitées, garantissant une simulation d'événement fiable dans Safari.

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!

Déclaration:
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