Maison > interface Web > js tutoriel > le corps du texte

Comment simuler des événements de clavier dans Safari à l'aide de JavaScript ?

Patricia Arquette
Libérer: 2024-11-21 09:10:11
original
633 Les gens l'ont consulté

How to Simulate Keyboard Events in Safari Using JavaScript?

Simulation d'événements de clavier dans Safari à l'aide de JavaScript

Pour tenter de simuler des événements de clavier dans le navigateur Safari, deux approches ont été testées à l'aide de JavaScript :

Approche 1 :

var event = document.createEvent("KeyboardEvent");
event.initKeyboardEvent("keypress", true, true, null, false, false, false, false, 115, 0);
Copier après la connexion

Approche 2 :

var event = document.createEvent("UIEvents");
event.initUIEvent("keypress", true, true, window, 1);
event.keyCode = 115;
Copier après la connexion

Cependant, après l'exécution de l'un ou l'autre code, les propriétés keyCode/which de l'objet événement sont restées définies sur 0, indiquant un échec de la simulation.

Solution :

Selon le polyfill DOM Keyboard Event Level 3, l'approche suivante peut être employé :

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 the legacy "keyCode" property is required:
delete e.keyCode;
Object.defineProperty(e, "keyCode", {"value" : 666})
Copier après la connexion

Mises à jour supplémentaires :

Le polyfill DOM Keyboard Event Level 3 prend désormais en charge les propriétés héritées :

var e = new KeyboardEvent("keydown", {
    bubbles : true,
    cancelable : true,
    char : "Q",
    key : "q",
    shiftKey : true,
    keyCode : 81
});
Copier après la connexion

Pour les cross- compatibilité du navigateur, la fonction initKeyboardEvent suivante peut être utilisée en dehors du polyfill :

function initKeyboardEvent(type, bubbles, cancelable, view, key, location, modifiers, repeat) {
  var event = document.createEvent("KeyboardEvent");
  event.initKeyboardEvent(type, bubbles, cancelable, view, key, location, modifiers, repeat, false, false, false, false, false, false, 0);
  return event;
}
Copier après la connexion

Référez-vous aux exemples fournis et à la démo pour plus d'illustrations.

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal