JavaScript を使用して Safari でキーボード イベントを作成する
ドキュメントを利用しようとする試みから分かるように、JavaScript を使用して Safari でキーボード イベントをシミュレートするのは困難な場合があります。 .createEvent。この問題は、keyCode プロパティの動作が一貫していないことが原因で、115 に設定しようとしても 0 に初期化されます。
これに対処するには、JavaScript の機能を強化する 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 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})
ポリフィルは、keyCode、charCode などのレガシー プロパティをサポートします。
var e = new KeyboardEvent("keydown", { bubbles : true, cancelable : true, char : "Q", key : "q", shiftKey : true, keyCode : 81 });
さらに、別の gist で initKeyboardEvent のクロスブラウザ バージョンを見つけることができます。
これらのテクニックを利用することで、 Safari でキーボード イベントを確実に作成してディスパッチできるため、さまざまなブラウザ間で一貫した動作が保証されます。
以上がJavaScript を使用して Safari でキーボード イベントを確実に作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。