ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScriptキーイベント(全ブラウザ対応)_JavaScriptスキル
パート 1: ブラウザーのキーイベント
js を使用してキーロギングを実装するには、ブラウザの 3 つの主要なイベント タイプ、つまり keydown、keypress、および keyup に注意する必要があります。これらはそれぞれ、3 つのイベント ハンドル onkeydown、onkeypress、onkeyup に対応します。一般的なキー押下では、キーダウン、キー押下、キーが放されたときのキーアップの順に 3 つのイベントすべてが生成されます。
これら 3 つのイベント タイプのうち、キーダウンとキーアップは比較的低レベルですが、キー押下は比較的高度です。ここでのいわゆる高度とは、ユーザーがシフト 1 を押すと、キープレスはキー イベントを解析して印刷可能な「!」文字を返すのに対し、キーダウンとキーアップはシフト 1 イベントのみを記録することを意味します。 [1]
ただし、キー押下は、F1 ~ F12、Backspace、Enter、Escape、PageUP、PageDown、矢印方向などの印刷可能な一部の文字に対してのみ有効です。キー押下イベントは生成されませんが、生成される可能性があります。キーダウンイベントとキーアップイベントが生成されます。ただし、FireFox では、ファンクション キーはキー押下イベントを生成できます。
keydown、keypress、keyup イベント ハンドラーに渡されるイベント オブジェクトには、いくつかの共通のプロパティがあります。 Alt、Ctrl、または Shift をキーと一緒に押すと、これはイベントの altKey、ctrlKey、shiftKey プロパティによって表されます。これらのプロパティは FireFox と IE に共通です。
パート 2: 互換性のあるブラウザ
ブラウザに関係するすべての JS では、ブラウザの互換性の問題を考慮する必要があります。
現在一般的に使用されているブラウザは主に IE と Mozilla をベースとしています。 Maxthon は IE カーネルに基づいていますが、FireFox と Opera は Mozilla カーネルに基づいています。
2.1 イベントの初期化
最初に知っておく必要があるのは、イベントを初期化する方法です。基本的なステートメントは次のとおりです。
関数 keyDown(){}
document.onkeydown = keyDown;
2.2 FireFoxとOperaの実装方法
FireFox や Opera などのプログラムは IE より実装が面倒なので、ここで最初に説明します。keyDown() 関数には隠し変数があります。通常、この変数を表すには文字「e」を使用します。
ファンクションキー下(e)
変数 e はキーストローク イベントを表します。どのキーが押されたかを確認するには、
属性を使用します。
e.どれe.これはキーのインデックス値を与えます。インデックス値をキーの英数字値に変換するには、次のように静的関数 String.fromCharCode() を使用する必要があります。
String.fromCharCode(e.that)
上記のステートメントをまとめると、FireFox でどのキーが押されたかを取得できます:
コードをコピーします
キーコードやキーイベントの文字コードはブラウザ間での移植性に欠けており、ブラウザやケースイベントによってキーコードや文字コードの格納方法が異なります。IEでは1つしかありません。 keyCode 属性であり、その解釈はイベント タイプによって異なります。 keydown の場合、keyCode にはキー コードが格納されます。keypress イベントの場合、keyCode には文字コードが格納されます。 IE には what 属性と charCode 属性がないため、that 属性と charCode 属性は常に未定義です。
FireFox の keyCode は常に 0 です。keydown/keyup のときは charCode=0 となり、これがキーコードです。イベントキープレスが発生すると、CHARCODEとCHARCODEの値が同じとなり、文字コードが格納されます。Operaではkeydown/keyupイベントではキーコードを格納し、キー押下時には文字コードを格納しますが、charCodeは定義されていません。常に未定義です。
3.2 キーダウン/キーアップまたはキープレスを使用する必要があります
最初の部分では、keydown/keyup と keypress の違いを紹介しました。一般的なルールとして、keydown イベントはファンクション キーに最も役立ち、keypress イベントは印刷可能なキーに最も役立ちます [3]。
キーボードのログは主に印刷可能な文字と一部のファンクション キーに対して行われるため、キープレスが第一の選択肢となります。ただし、最初の部分で述べたように、IE のキープレスはファンクション キーをサポートしていないため、キーダウン/キーアップ イベントを使用して補完する必要があります。それ。
3.3 コード実装
一般的な考え方は、keypress イベント オブジェクトを使用してキー文字を取得し、keydown イベントを使用して Enter、Backspace などのファンクション文字を取得することです。コードの実装は次のとおりです
コードをコピーします
コードは次のとおりです: