JSはイベント駆動型であり、イベントオブジェクトにアクセスできない場合は、F1で自転車を使用してレースを行うことになります。レース(車===イベント)が飛んでいるのを見ることができますが、それらに到達することはできません...(申し訳ありませんが恐ろしいアナロジーですが、要点はわかります)。
より多くの双方向性を向上/有効にするには、クライアントが何をするかを知っている必要があります。そうすれば、それに応じて対応できます。ユーザーがクリックした場合、たとえば、ページのどこをクリックしたかを知りたい場合があります。これ以上のものはすべてイベントオブジェクトにあります。それがないということは、戦争に行くようなもので、武装しておらず、手を後ろで縛って目隠しをしているようなものです。
考えてみてください。イベントが重要な他のプログラミング言語(C ++、C#、Java、ActionScriptなど)では、実際にはユーザーから直接入力を取得するものであれば、同じ質問をすることはありません。
どちらの回答(AlphaMaleとchiborg)も、イベントオブジェクトの目的を示しています。ただし、デフォルトの演算子が混乱しているため、この行var e= window.event || e;
は機能しません。これを試して:
charfield.onkeydown = function (e)//call parameter e, rather then event
{
e = e || window.event;//no var, as a parameter, it's already declared, won't set a global
var key = e.keyCode || e.which;//another default operator here... thx to IE
//and so on
if (e.preventDefault)
{
e.preventDefault();
e.stopPropagation();
return false;
}
e.returnValue = false;
e.cancelBubble = true;
};
そこで、イベントオブジェクトで使用できる(そして頻繁に使用する)メソッドの小さなリストを次に示します。
e = e || window.event;
IEはe = e !== undefined ? e : window.event;
イベントオブジェクトをハンドラーに渡さないため、自分で取得する必要があります(これはグローバルオブジェクトのプロパティであるためwindow.
)。これが機能しなかった理由は、JSエンジンにwindow.event
(IEのみ)とe
宣言していたのどちらかを選択させたためです。実際のイベントオブジェクトはevent
パラメーターに格納されていました。あなたは書くべきだったevent = event || window.event;
2行目var key = e.keyCode || e.which;
は、押されたキーのキーコードを取得します。ここでも、IEとW3Cは、このプロパティの名前について意見が一致していません。実際、彼らが常に同意している物件は1つだけですtype
。ここにいくつかのより多くのプロパティ
最後に、イベントを防止/ブロックできるようにするいくつかのメソッドを呼び出しました。電話番号を要求していて、ユーザーがテキストの入力を開始したとします。onkey*
これで取得できるイベントのいずれかを使用しpreventDefault
、メソッドを使用して入力の受け入れstopPropagation
を停止します。(それ以上のものがありますが、今はそれについては説明しません)。繰り返しになりますが、ほとんどのブラウザにはそのためのこれらのメソッドがありますが、IEにはさまざまなイベントモデルがあり、ここで詳細に説明しています。それに伴い、IEのトラックでイベントを停止するという別の見方があります。プロパティ。後者は特に厄介です。何かしたくない場合はtrueに設定するため
returnValue
cancelBubble
起こる...しかし、それは私の意見です。
イベントパラメータを使用して実行できることは他にもたくさんありますが、簡単に言うと、JSはイベント駆動型であり、イベントオブジェクトにアクセスできないと機能が低下します...