2009年1月2日

event:方法二節

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

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

event 的方法
initUIEvent

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

事件.initUIEvent(型態, 上傳旗, 取消旗, view, detail)

  1. 型態:物件型態名稱。用戶事件組有以下型態:DOMFocusIn, DOMFocusOut, DOMActivate, focus, blur。
  2. 上傳旗:設為 true,則事件可以向上傳遞。
  3. 取消旗:設為 true,則事件可以取消。
  4. view:指定抽象視區。可設為 window。
  5. detail:設定滑鼠按鍵次數。
  • 程式用法:

    <script type='text/javascript'>
    function initUIEventDM()
    {
      var eo=document.getElementById("iuevt");
      if( window.outerWidth == undefined )
      {
        eo.fireEvent("onfocus");
      }
      else
      {
        var vo = document.createEvent("UIEvent");
        vo.initUIEvent("focus", true, true, window, 1 );
        eo.dispatchEvent( vo );
      }
    }
    </script>
    <a href='javascript:initUIEventDM()'>
    點此模擬右邊元素 onfocus</a> / / / /
    <input id='iuevt' onfocus=
      'alert( event.view +" / "+ event.detail )' size=16>

  • 執行結果:

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

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

如果事件是可取消的,就取消事件預設的工作。事件會向上傳遞。其語法是:

事件.preventDefault()

  • 程式用法:

    <script type='text/javascript'>
    function preventDefaultDM(e)
    {
      if( e.preventDefault == undefined )
        e.returnValue = false;
      else
      {
        if( e.cancelable )
          e.preventDefault();
      }
      alert( e.screenX +' / '+ e.screenY );
    }
    </script>
    滑鼠點此格 <input type='checkbox'
      onclick='preventDefaultDM(event)'
      style='color:red' size=16 />

  • 執行結果:

    滑鼠點此格

  • 上例中,IE 用 returnValue;Firefox, Safari, Chrome 用 preventDefault()。小方格預設的打勾動作會被取消。
stopPropagation

事件停止向上傳遞。其語法是:

事件.stopPropagation()

  • 程式用法:

    <script type='text/javascript'>
    function stopPropagationDM(e)
    {
      if( e.stopPropagation == undefined )
        e.cancelBubble = true;
      else
        e.stopPropagation();
      alert( '不上傳' );
    }
    function propagationDM(e)
    {
      alert( '上傳' );
    }
    </script>
    <div onclick='alert("DIV")'
      style='width:50%; height:80px; background:#777777'>
    滑鼠點此格不會上傳 <input type='checkbox'
      onclick='stopPropagationDM(event)'
      style='color:red' size=16 /><br />
    滑鼠點此格會上傳 <input type='checkbox'
      onclick='propagationDM(event)'
      style='color:red' size=16 /><br />
    </div>

  • 執行結果:

    滑鼠點此格不會上傳
    滑鼠點此格會上傳
  • 上例中,IE 用 cancelBubble;Firefox, Safari, Chrome 用 stopPropagation()。

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