JSイベントオブジェクトの取得、イベントのソースオブジェクトの取得(Firefox,IE)

6910 ワード

忘れないようにメモをとる~~JSはイベントイベントイベントを取得し、ブラウザによって方法が異なります.
例えばIEの下、js関数ではwindowを通過する.eventは、関数にパラメータを追加する必要がなく、取得できます.
PrototypeやJQueryなどを使って、イベントのパッケージを持っています.JSライブラリを使ったほうがいいです.そうしないと、下のほうが面倒になります.
Firefox:パラメータを渡すには

  
< head >
< script >
function click1(event,str1){
alert(event
+ str1);

}
< / script>
< / head>
< body >
< input type = " button " id = " abc " onclick = " click1(event,'kenko'); " value = " click me "/ >
< / body>

IE:伝達パラメータ不要

  
< head >
< script >
function click1(){
alert(event.srcElement.value);
}
< / script>
< / head>
< body >
< input type = " button " id = " abc " onclick = " click1(); " value = " click me "/ >
< / body>

event.srcElement
event.srcElement.id
================================================================================
IEの下で、eventオブジェクトにはsrc Element属性がありますが、target属性はありません.Firefoxではevenオブジェクトにtarget属性がありますが、src Element属性はありません.
解決策:obj(obj=event.srcElement?event.srcElement:event.target;)の使用IEの下のeventの代わりにsrc ElementまたはFirefoxの下のevent.target..同時にeventの互換性の問題に注意します. 
eventのような現在のイベントの役割をキャプチャできると思います.srcElement.tagNameは、アクティブなタグ名を取得できます.注意「TD」、「TR」、「A」など、取得したタグはすべて大文字で表示されます.だから見たことのあるものを写して、覚えていないときにまた見に来ます.
function tdclick(){if(event.srcElement.tagName.toLowerCase()='td')alert("行:"+(event.srcElement.parentNode.rowIndex+1)+"列:"+(event.srcElement.cellIndex+1);     }
event.src Elementは字面から以下のキーワードを見ることができます:イベント、ソース彼の意味は:現在のイベントのソース、
私たちは彼の様々な属性を呼び出すことができます.documentのようです.getElementById("")という機能は、
よくfirefoxの下のeventに聞かれます.SrcElementの使い方について詳しく説明します.
IEの下で、eventオブジェクトにはsrc Element属性がありますが、target属性はありません.Firefoxではeventオブジェクトにtarget属性があるが、src Element属性はない.しかし、彼らの役割は相当しています.
下のイベントtarget=IEの下のevent.srcElement
解決策:obj(obj=event.srcElement?event.srcElement:event.target;)の使用IEの下のeventの代わりにsrc ElementまたはFirefoxの下のevent.target.
ieでイベントを処理するwindowを直接使用する.eventオブジェクトでいいですがfirefoxではwindowはありません.eventオブジェクトの、関数がイベントを使用する必要がある場合、イベント発生時にイベントをパラメータとして関数に渡す必要があり、ieではなく、イベントオブジェクトはグローバルで、どこでもアクセスできる.以下のgetEvent()関数はfirefoxとieと互換性があり、イベントオブジェクトにアクセスする関数の開始にgetEvent()を呼び出すだけで、イベントをパラメータとして渡す必要はない.以下のコードは実験に合格しました!
function myfunc(){var evt=getEvent();var element=evt.srcElement || evt.target;}
function getEvent(){if(document.all){return window.event;//ieであればfunc=getEvent.caller;while(func!=null){var arg0=func.arguments[0];if(arg0){if((arg0.constructor==Event || arg0.constructor ==MouseEvent)||(typeof(arg0)=="object"&& arg0.preventDefault && arg0.stopPropagation)){return arg0;}}func=func.caller;}return null;}