1。window.event
【分析手順starms最初にコードを見てください
コードコピーは次のとおりです。
functionET()
{
alert(event); // ie:[object]
}
IEで実行されている上記のコードの結果は[オブジェクト]ですが、Firefoxで実行することはできません。
イベントはIEのウィンドウオブジェクトのプロパティとして直接使用できるが、Firefoxでは、パラメーターを渡す方法を介してイベントを伝播するW3Cモデルを使用するため、機能にイベント応答インターフェイスを提供する必要があります。
[互換性処理]イベントの判断を追加し、ブラウザに従って正しいイベントを取得します。
コードコピーは次のとおりです。
functionET()
{
evt = evt?evt :( window.event?window.event:null);
// IEおよびFirefoxと互換性があります
アラート(EVT);
}
2。キーボード値の取得
[分析ノート] IEとFirefoxからキーボード値を取得する方法は異なります。 Firefoxの下でイベントと同等であるイベントは、IEの下のキーコードであることを理解することができます。お互いの違いについては、「キーコードの互換性テストとキーボードイベントのcharcode」を参照してください。
compatible互換処理】
コードをコピーします
コードコピーは次のとおりです。
関数mykeypress(evt){
// keyboardEventオブジェクトを取得するためにIEおよびFirefoxと互換性があります
evt =(evt)? evt :((window.event)?window.event: "")
// IEとFirefoxと互換性があり、KeyboardEventオブジェクトのキー値を取得します
var key = evt.keycode?evt.keycode:evt.which;
if(evt.ctrlkey &&(key == 13 || key == 10)){
// ctrlとEnterは同時に押されました
//何かをしてください。
}
}
3。イベントソースの取得
[分析ノート]イベントデリゲートを使用する場合、イベントがイベントソースの取得を介してどの要素が生まれるかを判断できます。ただし、IEでは、イベントオブジェクトにはsrcelementプロパティがありますが、ターゲットプロパティはありません。 Firefoxでは、均等なオブジェクトにはターゲットプロパティがありますが、srcelementプロパティはありません。
compatible互換処理】
コードコピーは次のとおりです。
ele = function(evt){//現在のイベントが行動しているオブジェクトをキャプチャします
evt = evt || window.event;
戻る
(obj = event.srcelement?event.srcelement:event.target;);
}
4。イベント監視
[分析ノート]イベントのリスニングと処理の観点から、つまり2つのインターフェイスを提供します。AttachEventとDetachevent、FirefoxはAddEventListenerとRemoveEventListenerを提供します。
[互換性処理]最も単純な互換性処理は、これら2つのインターフェイスセットをカプセル化することです。
コードコピーは次のとおりです。
関数AddEvent(Elem、EventName、Handler){
if(elem.attachevent){
elem.attachevent( "on" + eventname、function(){
handler.call(elem)});
//ここでコールバックfunction call()を使用して、このポイントをエレムにします
} else if(elem.addeventlistener){
ELEM.ADDEVENTLISTENER(EventName、Handler、False);
}
}
function removeEvent(elem、eventname、handler){
if(elem.detachevent){
elem.detachevent( "on" + eventname、function(){
handler.call(elem)});
//ここでコールバックfunction call()を使用して、このポイントをエレムにします
} else if(elem.removeeventlistener){
Elem.RemoveEventListener(EventName、Handler、False);
}
}
Firefoxの下では、これはイベント処理関数がリスニングされた要素自体を指していることに注意する必要がありますが、IEでは、コールバック関数呼び出しを使用して、現在のコンテキストがリスニングされた要素を指し示すことができます。
5。マウスの位置
[分析ノート] IEの下では、均一なオブジェクトにはxおよびy属性がありますが、pagexとpagey属性はありません。 Firefoxの下では、均一なオブジェクトにはpagexとpagey属性がありますが、xおよびy属性はありません。
[互換性処理] MX(MX = event.x?event.x:event.pagex;)を使用して、ieまたはevent.pagexのfirefoxでevent.xを置き換えます。絶対的な位置は、複雑なポイントで考慮する必要があります。
コードコピーは次のとおりです。
関数getAbspoint(e){
var x = e.offsetleft、y = e.offsettop;
while(e = e.offsetparent){
x += e.offsetLeft;
y += e.offsettop;
}
alert( "x:" + x + "、" + "y:" + y);
}