JavaScript Event学習:イベントの訪問
2402 ワード
今はイベントハンドラを登録しました.事件についてもっと深く知りたいです.私たちはイベントが発生した時のマウスの位置を知りたいです.ユーザーがどのボタンを押したかを知りたいです.これらは可能です.この部分には多くの迷惑なブラウザの互換性がありますが.(ここではブラウザの互換性のリストを素早く見ることができます.)
イベントの属性を読み出すには、まずイベントにアクセスする必要があります.
ブラウザの互換性
ブラウザ戦争の視点から見れば、Netscapeはアクセスモデル(後にW 3 Cに参考にされる)と多くのイベント属性を実現し、同時にマイクロソフトも同じことをしました.もちろんこの2つのモデルは完全に互換性がない.でも、私達がまた紹介してくれたように、もし
if (W3C/Netscape) {
use W3C/Netscape model for access and property names
} else if (Explorer) {
use Microsoft model for access and property names
}
このように、互換性の問題を正しく解決する方法ではないので、彼はいくつかのコードのほとんどを実行することができますが、ブラウザの役割を失うと考えられていません.だから私たちはまず一つのイベントに訪問して、それぞれの属性を読み取らなければなりません.まず訪問イベントの問題について議論します.イベントの属性は後で議論します.
W 3 C/Netscape
W 3 C/Netscapeイベントアクセスモデルでイベントはパラメータとしてイベントハンドラに渡されます.イベントハンドラを定義すると
element.onclick=doSomething;
doSomethingはイベントをパラメータとして扱う.習慣的にはe変数に保存されています.もちろん名前は何でも変えられます.function doSomething(e) {// e gives access to the event}
これは完全自動です.他のコードは必要ありません.匿名関数にこのように書いてもいいです.element.onclick = function (e) {alert('Event type is ' + e.type);}
マイクロソフトマイクロソフトのイベント訪問モデルには特別なプロパティのwindow.eventが最後に発生したイベントを含みます.
element.onclick = doSomething;
function doSomething() {// window.event gives access to the event}
またはelement.onclick = function () {alert('Event type is ' + window.event.type);}
イベントとイベントもう一つ古いNetscapeプロパティwindow.Eventがあることに気づきました.IEはこれを知らないで、Netscape 4も彼を曲解します.ですから、イベントが小文字で始まることを確認して書きます.
ブラウザをまたぐイベントアクセス
幸いなことに、ブラウザをまたいでイベントにアクセスするシナリオを書くのですか?それとも簡単ですか?
element.onclick = doSomething;
function doSomething(e) {
if (!e)
e = window.event;
// e gives access to the event in all browsers
}
eが存在しないなら、彼にwindow.eventの価値を与えます.今はeはすべてのブラウザでイベントを表示しています.インライン型のイベントハンドラとの統合
インライン式の登録モデルでは、イベントを関数に渡す必要があります.
<pre onclick="doSomething(event)">
function doSomething(e) {
alert(e.type);
}
マイクロソフトモデルでイベントは正しい属性ですが、他のブラウザでも識別できます.[回転:http://tech.ddvip.com/2010-03/1269927678148961.html]