JavaScript を使用して Safari でキーボード イベントを確実に作成する方法

Mary-Kate Olsen
リリース: 2024-11-13 08:37:02
オリジナル
891 人が閲覧しました

How to Reliably Create Keyboard Events in Safari using JavaScript?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート