ホームページ  >  記事  >  ウェブフロントエンド  >  FireFox JavaScript グローバル イベント オブジェクト_JavaScript のヒント

FireFox JavaScript グローバル イベント オブジェクト_JavaScript のヒント

WBOY
WBOYオリジナル
2016-05-16 18:51:361024ブラウズ

ただし、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 メソッドはメソッド シグネチャを変更する必要がありません。



コードをコピーします コードは次のとおりです。次のように:function 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>
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。