Maison > interface Web > js tutoriel > Comment simuler des événements de clavier dans Safari à l'aide de JavaScript ?

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

Patricia Arquette
Libérer: 2024-11-21 09:10:11
original
777 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!

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