イベントに関する情報を読みたいとき、多くの場合、多数の属性に埋もれてしまいますが、そのほとんどはほとんどのブラウザーでは適切に動作しません。イベント互換性リストは次のとおりです。
これらの属性のリストは作成しません。これらの状況は非常に混乱しており、学習にはまったく役立ちません。 5 つのコードを書く前に、ブラウザに関して 5 つの質問をしたいと思います。
1. イベントの種類は何ですか?
2. イベントの対象となる HTML 要素はどれですか?
3. イベントが発生したときにどのキーが押されましたか?
4. イベントが発生したときにどのマウス ボタンが押されましたか?
5. イベントが発生したときのマウスの位置はどこですか?
最後の質問については、ここで非常に詳細に回答しました。
これらのコードでは非常に厳密なオブジェクト チェックを行っていることに注意してください。まずイベントへのクロスブラウザー アクセスを作成し、各属性を使用する前にブラウザーのサポートを確認しました。
1. イベントの種類は何ですか?
これは標準的な回答を持つクロスブラウザーの質問です: type 属性を使用してそのプロパティを表示します:
function doSomething(e) {
if (!e) var e = window.event;
alert(e.type); 🎜> }
2. どの HTML 要素がイベントのターゲットですか?
W3C/Netscape は次のように述べました: ターゲット。いいえ、Microsoft は、それは srcElement だと言いました。どちらのプロパティも、イベントが発生したときに HTML 要素を返します。
var targ;
if (!e) var e = window.event;
if (e.target) = e.target;
else if (e.srcElement) 🎜>if (targ.nodeType == 3) // Safari のバグを無効にする
targ = targ.parentNode;
}
イベントがキャプチャされたりバブルアップしたりした場合でも、target/srcElement 属性はイベントが最も早く発生した要素のままです。
その他のターゲット
多くのターゲティング属性があります。 currentTarget についてはイベント順序の記事で説明し、relativeTarget、fromElement、toElement については記事 Mouse イベントで説明しました。
3. イベントが発生したときにどのキーが押されましたか?
この質問は比較的簡単です。まず keyCode 属性からキーのコード (a=65) を取得します。キー値を取得した後、必要に応じて String.fromCharCode() メソッドを通じて実際のキー値を知ることができます。
if (!e) var e = window.event;
if (e.keyCode) code = e.keyCode; 🎜>var 文字 = String.fromCharCode(code);
alert('文字は ' 文字でした);
キーボード イベントの使用が困難になる可能性のある場所がいくつかあります。たとえば、kepress イベントは、ユーザーがキーを押している間発生します。ただし、ほとんどのブラウザではキーダウンのトリガー時間は押した時間と同じ長さです。それが良い考えかどうかは分かりませんが、そういうことです。
4. イベントが発生したときにどのマウス ボタンが押されましたか?
ここには、どのマウス ボタンが押されたかを知るための 2 つのプロパティがあります: what と button。通常、これらのプロパティはクリック時に必ずしも機能するとは限らないことに注意してください。どのマウス ボタンが押されたかを安全に検出するには、mousedown イベントとmouseup イベントを使用することをお勧めします。
これは古い Netscape プロパティです。マウスの左ボタンの値は 1、中央ボタン (スクロール ホイール) の値は 2、マウスの右ボタンの値は 3 です。サポートが弱いことを除けば特に問題はありません。実際、マウスのボタンを検出するためによく使用されます。
ボタンの属性が適切に認識されるようになりました。 W3C の標準値は次のとおりです。
左ボタン 0
中ボタン 1
右ボタン 2
Microsoft の標準値は次のとおりです。
左ボタン 1
中ボタン4
右ボタン 2
Microsoft の標準が W3C の標準よりも優れていることは疑いの余地がありません。 0 はキーが押されていないことを意味し、それ以外はすべて不合理です。
また、Microsoft モデルのみ、ボタンの値を組み合わせることができます。たとえば、5 は「左ボタンと中ボタン」を同時に押すことを意味します。 IE6 はマージをサポートしていないだけでなく、w3c モデルは理論的に不可能です。左ボタンが押されたかどうかは決してわかりません。
つまり、私の意見では、w3c はボタンの定義において重大な間違いを犯したと考えています。
右クリック
幸いなことに、通常は、右ボタンがクリックされたかどうかを知りたいと考えます。 W3C と Microsoft はこの問題に関してたまたまボタンの値を 2 として定義しているため、引き続き右クリックを検出できます。
function doSomething(e) {
var rightclick;
if (!e) var e = window.event;
if (e.that) rightclick = (e.that == 3);
else if (e.button) (e. button == 2);
alert('Rightclick: ' rightclick); // true または false
}
通常、Mac のみであることに注意してください。ボタンが 1 つある場合、Mozilla では Ctrl キーを押しながらクリックするボタンの値を 2 と定義しているため、Ctrl キーを押しながらクリックするとメニューも開きます。 ICab はまだマウス ボタンの属性をサポートしていないため、Opera では右クリックを検出できません。
5. イベントが発生したときのマウスの位置はどこですか?
マウスの位置の問題は非常に深刻です。マウス座標には少なくとも 6 つのプロパティがありますが、マウス座標を見つけるための信頼できるクロスブラウザーの方法はまだありません。
次の 6 つの座標セットです:
1. clientX、clientY
2. オフセット X、オフセット Y
4. 画面 X , screenY
6. x, y
pageX/Y と clientX/Y の問題についてはここで説明したことがあります。
screenX と screenY は、ブラウザー間で互換性のある唯一のプロパティのペアです。これらは、コンピュータ画面全体のマウスの座標を示します。残念ながら、この情報だけでは十分ではありません。マウスが画面上のどこにあるかを知る必要はありません。おそらく、現在のマウスの位置に新しいウィンドウを配置したいかもしれません。
他の 3 つの属性ペアは重要ではありません。ここでの説明を参照してください。
正しいコード
次のコードはマウスの座標を正しく検出できます
if (!e) var e = window.event; >if (e .pageX || e.pageY) {
posx = e.pageX;
posy = e.pageY>}
else if (e.clientX || e.clientY) {
posx = e.clientX document.body.scrollLeft
document.documentElement.scrollLeft;
posy = e.clientY document.body.scrollTop
document.documentElement.scrollTop; 🎜>// posx と posy にはドキュメントに対する相対的なマウス位置が含まれます
// この情報を使って何かを行います
}
原文はこちら: http://www .quirksmode.org /js/events_properties.html
私の Twitter でアドバイスをください: @rehawk

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

Pythonはデータサイエンスや機械学習により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、簡潔な構文とリッチライブラリエコシステムで知られており、データ分析とWeb開発に適しています。 2。JavaScriptは、フロントエンド開発の中核です。 node.jsはサーバー側のプログラミングをサポートしており、フルスタック開発に適しています。

JavaScriptは、最新のブラウザにすでに組み込まれているため、インストールを必要としません。開始するには、テキストエディターとブラウザのみが必要です。 1)ブラウザ環境では、タグを介してHTMLファイルを埋め込んで実行します。 2)node.js環境では、node.jsをダウンロードしてインストールした後、コマンドラインを介してJavaScriptファイルを実行します。

Quartzタイマーを使用してタスクをスケジュールする場合、Quartzでタスク通知を事前に送信する方法、タスクの実行時間はCron式によって設定されます。今...

JavaScriptプログラミング、プロトタイプチェーンの関数パラメーターの理解と操作のJavaScriptのプロトタイプチェーンの関数のパラメーターを取得する方法は、一般的で重要なタスクです...

WeChatアプレットWeb-ViewでVue.jsを使用する動的スタイルの変位障害がvue.jsを使用している理由の分析...

複数のリンクの同時ゲットリクエストを作成し、結果を返すために順番に判断する方法は? TamperMonkeyスクリプトでは、複数のチェーンを使用する必要があることがよくあります...


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

Dreamweaver Mac版
ビジュアル Web 開発ツール

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SublimeText3 中国語版
中国語版、とても使いやすい

ホットトピック



