Safari ブラウザ内でキーボード イベントをシミュレートするために、JavaScript を使用して 2 つのアプローチがテストされました。
アプローチ1:
var event = document.createEvent("KeyboardEvent"); event.initKeyboardEvent("keypress", true, true, null, false, false, false, false, 115, 0);
アプローチ 2:
var event = document.createEvent("UIEvents"); event.initUIEvent("keypress", true, true, window, 1); event.keyCode = 115;
ただし、どちらかのコードを実行した後、イベント オブジェクトの keyCode/どのプロパティは 0 に設定されたままになります。 、失敗を示します
解決策:
DOM キーボード イベント レベル 3 ポリフィルに従って、次のアプローチを使用できます:
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})
追加の更新:
DOM キーボード イベント レベル3 ポリフィルはレガシー プロパティをサポートするようになりました:
var e = new KeyboardEvent("keydown", { bubbles : true, cancelable : true, char : "Q", key : "q", shiftKey : true, keyCode : 81 });
ブラウザ間の互換性のために、次の initKeyboardEvent 関数をポリフィルの外部で利用できます:
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; }
提供された例とデモを参照してください。さらに詳しく説明します。
以上がJavaScript を使用して Safari でキーボード イベントをシミュレートする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。