JavaScript--イベント対象(25)

31813 ワード

//JavaScriptイベントの重要な点は、それらがいくつかの比較的一致した特徴を持っていて、開発に強力な機能を提供できます.
//最も便利で強力なのは、イベントの対象です.マウスのイベントやキーボードのパッティングなどを処理してくれます.
//さらに、一般的なイベントの獲得/発泡流の関数を変更することができる.
イベントの対象
 1 //               :                           ;

 2 //           :  .      =  ;

 3     document.onclick = function(){

 4         alert('Lee');

 5     }

 6     // PS:      :click        ,  ;

 7     // onclick:                  (        );

 8     // document:         ,          ;

 9     // function():           ,       ;

10 

11 //                   ,           ;

12     document.onclick = box;                                //          ,    ;

13     function box(){

14         alert('Lee');

15     }

16 

17 // this       

18 //     に ける        :      ,        ,this          ;

19     var input = document.getElementsByTagName('input')[0];

20     input.onclick = function(){

21         alert(this.value);                                // HTMLInputElement,this  input  ;

22     }
 1 //         ,         ,                 ;

 2 //          /     /              ;

 3 //     ,       event  ,                          ;

 4 //   ,        ,             ,           ;

 5     function box(){                                     //       ;

 6         alert(arguments.length);                        // 0;           ;

 7     }

 8     input.onclick = function(){                         //          ;

 9         alert(arguments.length);                        // 1;        ;

10     }

11     // PS:        ,    ,                       ;

12     //   ,            ,        event  ;

13     input.onclick = function(){

14         alert(arguments[0]);                            // MouseEvent,      ;

15     }

16 

17     //           ,          ,             ;

18     input.onclick = function(evt){                     //   event  ,

19         alert(evt);                                    // MouseEvent,      ;

20     }

21 

22     //     event  , W3C   ,IE   ,IE       event  ,   window.event    ;

23     input.onclick = function(evt){

24         var e = evt || window.event; 25         alert(e);                                      //           event  ;

26     }
二マウスイベント 
//マウスイベントはWeb上で最もよく使われているイベントです.やはりマウスは最も主要な位置決めデバイスです.
//イベントオブジェクトからマウスボタン情報や画面座標取得などを取得できます.
 1 1.     

 2 //             (       )    click  ,               ;

 3 //    mousedown mouseup    ,   event      button  ,         ;

 4         IE(W3C)  button  

 5                              

 6     0                    (       );

 7     1                      (      );

 8     2                    (       );

 9         IE  button   

10     1                    (       );

11     2                    (       );

12     4                         ;

13 //       ;

14     function getButton(evt){

15         var e = evt || window.event;

16         if(evt){                                // Chrome     W3C IE  ;

17             return e.button;                    //        ;

18         }else if(window.event){

19             switch(e.button){

20                 case 1:

21                     return 0;

22                 case 4:

23                     return 1;

24                 case 2:

25                     return 2;

26             }

27         }

28     }

29     document.onmouseup = function(evt){

30         if(getButton(evt) == 0){

31             alert('       !');

32         }else if(getButton(evt) == 1){

33             alert('     ');

34         }else if(getButton(evt) == 2){

35             alert('     !');

36         }

37     }
 1 2.        

 2 //                     :

 3 //           ;

 4 //        ;

 5             

 6                      

 7     clientX            X  ,        ;

 8     clientY            Y  ,        ;

 9     screenX            X  ,        ;

10     screenY            Y  ,        ;

11     pageX              X  ,            ;

12     pageY              Y  ,            ;

13 

14 //           ;

15     document.onclick = function(evt){

16         var e = evt || window.event;

17         alert(e.clientX+','+e.clientY);

18         alert(e.screenX+','+e.screenY);

19         alert(e.pageX+','+e.pageY);

20     }

21     // PS:           ,pageX pageY   clientX clientY    ;

22     // IE8               ,                    ;

23     //        document.body(    ) document.documentElement(    )  scrollTop scrollLeft  ;

24     // pageX pageY    ;

25     var div = document.getElementById('myDiv');

26     addEventListener(div,'click',function(evt){

27         var evt = event || window.event;

28         var pageX = evt.pageX,

29             pageY = evt.pageY;

30         if(pageX === undefined){

31             pageX = evt.clientX+(docuemnt.body.scrollLeft || document.documentElement.scrollLeft);

32         }

33         if(pageY === undefined){

34             pageY = evt.clientY+(document.body.scrollTop || document.documentElement.srollTop);

35         }

36         alert(pageX+pageY);

37     });
 1 3.    

 2 //   ,                            ;

 3 //     :Shift/Ctrl/Alt Meat(Window  Windows ,     Cmd );

 4 //                 ,      ;

 5                      

 6                           

 7     shiftKey                   Shift ;

 8     ctrlKey                    ctrlKey ;

 9     altKey                     alt ;

10     metaKey                    windows ,IE   ;

11 

12 //       ;

13     function getKey(evt){

14         var e = evt || window.event;

15         var keys = [];

16         if(e.shiftKey) keys.push('shift');    //          shift ;

17         if(e.ctrlKey) keys.push('ctrl');

18         if(e.altKey) keys.push('alt');

19         return keys;

20     }

21     document.onclick = function(evt){

22         alert(getKey(evt));             //       ,    shift/ctrl/alt  ;

23     }
キーボードイベント
//ユーザーはキーボードを使う時キーボードイベントをトリガします.
//「DOM 2級事件」は最初にキーボードイベントが規定されていましたが、その後に該当内容が削除されました.
//最終的には最初のキーボードイベントを使っていますが、IE 9は先に「DOM 3」レベルのキーボードイベントをサポートしています.
1 1.   

2 //    keydown keyup   ,event   keyCode          ,            ;

3 //         ,keyCode     ASCII                ;         ;

4     document.onkeydown = function(evt){

5         alert(evt.keyCode);

6     }
 1 2.     

 2 // Firefox/Chrome/Safari event       charCode  ;

 3 //          keypress        ,                 ASII  ;(              );

 4 //    keyCode    0             ;

 5 // IE Opear   keyCode      ASCII  ;

 6     function getCharCode(evt){

 7         var e = evt || window.event;

 8         if(typeof e.charCode == 'number'){

 9             return e.charCode;

10         }else{

11             return e.keyCode;

12         }

13     }

14     document.onkeypress = function(evt){

15         alert(getCharCode(evt));

16     }

17     // PS:    String.fromCharCode() ASCII          ;
四W 3 CとIE
//標準的なDOMイベントにおいて、イベントオブジェクトは、その特定のイベントを作成することに関連する属性と方法を含む.
//トリガするイベントの種類が違っています.利用可能な属性と方法も違います.
 1             W3C event        

 2   /                               /                 

 3 bubbles Boolean            ;  4 cancelable          Boolean                                        ;

 5 currentTarget       Element                                             ;

 6 detail Integer              ;(          );  7 eventPhase          Integer                                    :1      ,2      ,3      ;

 8 preventDefault() Function             ;  cancelable   true,         ;  9 stopPropagation() Function                 ;  bubbles   true,         ; 10 target              Element                              ;

11 type                String                                   ;

12 view                AbstractView                              ;        window  ;
1             IE  event      

2                                   /                 

3 cancelBubble Boolean        false,      true         ; 4 returnValue Boolean        true,       false            ; 5 srcElement Element         ; 6 type               String                                  ;
1 //   target srcElement  

2     function getTarget(evt){

3         var e = evt || window.event;

4         return e.target || e.srcElement;            //         DOM  ;

5     }

6     document.onclick = function(evt){

7         var target = getTarget(evt);

8         alert(target);

9     }
五事件の流れ 
//                  ,                   ,          ;

//                   ,                    ;

//          :     ;

1.    

//          ;

2.    

//          ;
 1 //            ;         Netscape    ;

 2 //          DOM2                     ;

 3     document.onclick = function(){

 4         alert('  document');

 5     }

 6     document.documentElement.onclick = function(){

 7         alert('  html');

 8     }

 9     document.body.onclick = function(){

10         alert('  body');

11     }

12     document.getElementById('box').onclick = function(){

13         alert('  div');

14     }

15     document.getElementsByTagName('input')[0].onclick=function(){

16         alert('  input');

17     }

18     // PS:  input      document;
1 //           

2     function stopPro(evt){

3         var e = evt || window.event;

4         //     cancelBubble,  IE   ,     true         ;

5         //     W3C          stopPropagation();

6         window.event ? e.cancelBubble = true : e.stopPropagation();

7     }