ただし、FireFox にはそのようなオブジェクトはありません。次のシナリオのように、ネストされた関数呼び出しがある場合は、イベントを継続的に渡す必要があります。
関数 Test(event,dom){
Test1 (イベント) ;
}
関数 Test1(イベント){
テスト 2(イベント);
関数 Test2(イベント){
alert(event.target.id);
}
Test2 メソッドでイベントを使用する必要がある場合は、次のように記述する必要があります。新しい関数の追加などの特定のシナリオで、元の Test2 メソッドを変更してイベント オブジェクトにアクセスする必要があり、元の Test2 メソッドのシグネチャがパラメーター イベントのない Test2() である場合は、Test2() を変更する必要があります。 Test2(event) への変更は非常に見苦しいものですが、JavaScript へのこの変更はメソッドのオーバーロードですが、元のメソッドの署名も破壊します。
FireFox には、イベントを取得するための window.event のようなグローバル変数はありますか?
残念ながら、これは FireFox のオブジェクト モデルでは利用できませんが、回避策を使用して取得できます。例:
function GetEvent(caller){
if (document.all)
return window.event; //IE の場合。
if(caller == null || typeof(caller) != "function")
return null; 🎜>while(caller.caller != null){
caller = caller.caller;
}
return caller.arguments[0]
document.all はここで IE ブラウザかどうかを判断するのは良くありません。JQuery などのライブラリに良い実装があります。
このように、上記の Test2 メソッドはメソッド シグネチャを変更する必要がありません。
var events = GetEvent(Test2)
alert(GetEventTarget(event).id); (event){
if (document.all)
returnevent.srcElement;
returnevent.target;
GetEvent メソッドを次のように記述できるのはなぜですかイベントを取得しますか?
Firefox では、イベント モデルの最初のイベント呼び出しはイベントをメソッドに明示的に渡すため、JavaScript を呼び出すイベントを取得する GetEvent メソッドを作成できます。
screen.width-300)this.width=screen.width-300" border=0>