dojo Events
簡介
為了能應付各種不同的流覽器對事件物件(event object) 有不同的定義及不同的處理方式,dojo 對事件物件的定義及處理方式做了正規化 (normalized),確保在 dojo 中處理事件時,事件物件的屬性或處理方法不會因為流覽器不同,而有所不同。在 dojo 中,事件物件大致分為兩種: Event 及 MouseEvent。Event 物件由程式觸發,傳回物件的屬性較少,觸發型別 (type) 可以自定;自訂型別時,中、英文皆可使用,唯使用英文時,所有大寫字母 (Uppercase) 均會被轉換成小寫 (Lowercase);因此,自定型別時最好全部使用小寫字母,"_" 及 "-" 兩個符號也可以使用。所有的 MouseEvent 均由使用者經由圖形介面元件所觸發,觸發的型別有固定種類,傳回物件的屬性比 Event 物件多,多出來的屬性大多是具有游標相關的資訊。至於事件物件的屬性及可能的型別,可說是族繁不及備載;在 w3cschools 網頁中有詳細的列示及解釋。也可以在 JavaScript 中,當使用者觸發圖形介面元件的事件時,用 console.log(event); 指令,然後到主控台去查看完整的物件屬性。
dojo 正規化後常用之事件物件的屬性如下:
- target:
- 觸發此事件的元素 (element)。
- currentTarget:
- 目前的元素,指的是在事件上傳 (bubble up) 的階段,目前處理此事件的元素。
- type:
- 觸發事件的型別。
- layerX:
- 事件觸發時,相對於處理此事件的元素,游標所在的 X 軸座標。
- layerY:
- 事件觸發時,相對於處理此事件的元素,游標所在的 Y 軸座標。
- pageX
- 事件觸發時,相對於流覽器視窗,游標所在的 X 軸座標。
- pageY
- 事件觸發時,相對於流覽器視窗,游標所在的 Y 軸座標。
- relatedTarget:
- 在觸發 mouseover 及 mouseout 事件時,游標所在,或離開的元素。
- charCode:
- 觸發按鍵事件時,按鍵的字母鍵值。
- keyCode:
- 觸發按鍵時,按鍵的鍵盤碼(當觸發事件的按鍵並非一般字母鍵,例 Enter, esc 鍵)。
另有常用到的函式如下:
- event.preventDefault():
- 停止事件預設設處理動作。
- event.stopPropagation():
- 停止事件的上傳 (bubble up) 動作。
- event.stopImmediatePropagation():
- 停止事件的上傳動作,同時停止觸發此元素的其它事件處理器 (handler)。
- event.stop(event):
- 停止事件預設的處理動作,同時停止事件的上傳動作。
dojo 用來連接事件 (event) 及事件處理器 (event handler) 的模組元件為 dojo/on。繼承 dojo/evented 類別的物件則具有 on() 及 emit() 兩個函式。
沒有留言:
張貼留言