2008年12月31日

event:方法一節

特徵一節 | 特徵二節 | 特徵三節 | 方法一節 | 方法二節

當事件發生時,會動態產生一個 event 物件,事件操控器可以由此物件讀取事件的資訊。

event 的方法
initEvent

設定基本事件組(Event, HTMLEvents)之事件的初值,此事件必須先用 createEvent() 產生。在發動(dispatch)事件前,要先設定事件的初值。其語法是:

事件.initEvent(型態, 上傳旗, 取消旗)

  1. 型態:物件型態名稱。基本事件組有以下型態:abort, change, error, load, reset, resize, scroll, select, submit, unload。
  2. 上傳旗:設為 true,則事件可以向上傳遞。
  3. 取消旗:設為 true,則事件可以取消。
  • 程式用法:

    <script type='text/javascript'>
    function initEventDM()
    {
      var eo=document.getElementById("ievt");
      if( window.outerWidth == undefined )
      {
        eo.fireEvent("onchange");
      }
      else
      {
        var vo = document.createEvent("Event");
        vo.initEvent("change", true, true);
        eo.dispatchEvent( vo );
      }
    }
    </script>
    <a href='javascript:initEventDM()'>
    點此模擬右邊元素 onchange</a> / / / /
    <input id='ievt' onchange=
      'alert("改變了")' size=16>

  • 執行結果:

    點此模擬右邊元素 onchange / / / /

  • 上例中,IE 用 fireEvent();Firefox, Safari, Chrome 用 dispatchEvent()。
initKeyEvent

設定鍵盤事件組(KeyboardEvent)之事件的初值,此事件必須先用 createEvent() 產生。在發動(dispatch)事件前,要先設定事件的初值。其語法是:

事件.initKeyEvent (型態, 上傳旗, 取消旗, viewArg, ctrlKeyArg, altKeyArg, shiftKeyArg, metaKeyArg, keyCodeArg, charCodeArg)

  1. 型態:物件型態名稱。鍵盤事件組有以下型態:keydown, keyup。
  2. 上傳旗:設為 true,則事件可以向上傳遞。
  3. 取消旗:設為 true,則事件可以取消。
  4. viewArg:指定 UIEvent.view。可設為 null。
  5. ctrlKeyArg, altKeyArg, shiftKeyArg, metaKeyArg:設定組合鍵,可設為 true, false。
  6. keyCodeArg:設定按鍵碼。
  7. charCodeArg:設定獨角碼。
  • 程式用法:

    <script type='text/javascript'>
    function initKeyEventDM()
    {
      var eo=document.getElementById("ikevt");
      if( window.outerWidth == undefined )
      {
        eo.fireEvent("onkeydown");
      }
      else
      {
        var vo = document.createEvent("KeyboardEvent");
        vo.initKeyEvent("keydown", true, true, null, false, true, false, false, 9, 0);
        eo.dispatchEvent( vo );
      }
    }
    </script>
    <a href='javascript:initKeyEventDM()'>
    點此模擬右邊元素 onkeydown</a> / / / /
    <input id='ikevt' onkeydown=
      'alert( event.altKey +" / "+ event.keyCode )' size=16>

  • 執行結果:

    點此模擬右邊元素 onkeydown / / / /

  • 上例中,IE 用 fireEvent();Firefox 用 dispatchEvent();Safari, Chrome 沒支援。
initMouseEvent

設定滑鼠事件組(MouseEvent, MouseEvents)之事件的初值,此事件必須先用 createEvent() 產生。在發動(dispatch)事件前,要先設定事件的初值。其語法是:

事件.initMouseEvent(型態, 上傳旗, 取消旗, view, detail, screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, metaKey, button, relatedTarget);

  1. 型態:物件型態名稱。滑鼠事件組有以下型態:click, dblclick, mousedown, mouseup, mouseover, mousemove, mouseout。
  2. 上傳旗:設為 true,則事件可以向上傳遞。
  3. 取消旗:設為 true,則事件可以取消。
  4. view:指定抽象視區。可設為 window。
  5. detail:設定滑鼠按鍵次數。
  6. screenX, screenY:設定螢幕座標。
  7. clientX, clientY:設定展現區座標。
  8. ctrlKeyArg, altKeyArg, shiftKeyArg, metaKeyArg:設定組合鍵,可設為 true, false。
  9. button:滑鼠鍵。
  10. relatedTarget:次目標。
  • 程式用法:

    <script type='text/javascript'>
    function initMouseEventDM()
    {
      var eo=document.getElementById("imevt");
      if( window.outerWidth == undefined )
      {
        eo.fireEvent("onclick");
      }
      else
      {
        var vo = document.createEvent("MouseEvent");
        vo.initMouseEvent("click", true, true, window,
        0, 0, 0, 11, 22, true, false, false, false, 0, null);
        eo.dispatchEvent( vo );
      }
    }
    </script>
    <a href='javascript:initMouseEventDM()'>
    點此模擬右邊元素 onclick</a> / / / /
    <span id='imevt' onclick=
      'alert( event.clientX +" / "+ event.clientY +" / "+ event.ctrlKey)'>
    別點我</span>

  • 執行結果:

    點此模擬右邊元素 onclick / / / / 別點我

  • 上例中,IE 用 fireEvent();Firefox, Safari, Chrome 用 dispatchEvent()。

©2008-2009 by ant2legs, All Rights Reserved. ant2legs 擁有其製作的文章,圖片與程式的著作權,所有權利保留。