GWT有沉沒事件的概念。所有沉沒事件,但只有這些,傳遞給EventListener
的onBrowserEvent
。
在最低級別,您安裝EventListener
到Element
使用DOM.setEventListener
和沉事件與DOM.sinkEvents
(或最近DOM.setBitlessEvents
)。爲了避免內存泄漏(特別是 - 如果不僅在舊IE中),您必須確保在頁面卸載之前設置了Element
的EventListener
至null
。
一個Widget
是EventListener
和處理少數的這些東西給你:它會自動調用DOM.setEventListener
其onAttach
和onDetach
,它跟蹤的沉沒事件:其sinkEvents
是添加劑,使其更易於使用,因此有一個unsinkEvents
副本。
後來,在GWT 1.6,已添加的事件處理程序,並addDomHandler
(以及最近addBitlessDomHandler
)自動調用sinkEvents
用適當的值(從DomEvent.Type
作爲參數傳遞截取);爲了使所有這些工作成功,小部件中的onBrowserEvent
的默認行爲是將事件分派給註冊的處理程序。
之所以這些bitless變種的事件最初被稱爲一個位域int
常量,但瀏覽器有越來越多的事件,以便GWT拔腿就跑出位。 bitless變體僅適用於而非泄漏的瀏覽器,因爲小部件不會跟蹤哪些事件已被註冊,從而將它們從其onDetach
註銷,與基於位的事件相反。
以GWT 1.6開頭的所有這些新的DomEvent
s(以及它們的處理程序)都是NativeEvent
的包裝。有兩種GwtEvent
s:本地的(DomEvent
s),由瀏覽器調度,邏輯由GWT本身調度並且沒有映射到DOM級別的事件。 addDomHandler
只關注DomEvent
s,又名本地事件。
總結:當您退出剛剛修改的文本字段時,瀏覽器會發送一個change
事件。如果TextBox
小部件有沉沒該事件,其onBrowserEvent
將與Event
(這只是NativeEvent
的傳統子類)代表該事件調用。然後,onBrowserEvent
的默認實現將創建一個ChangeEvent
並將其發送到註冊的ChangeHandler
。
什麼是沉沒事件?當你說「小部件已經沉沒該事件」時,這意味着什麼? – Mayumi
英文動詞:sink/sank /沉沒。在GWT的上下文中,如果已使用其代碼作爲參數調用了「sinkEvents」,則該事件爲_sunk_。 –
@ThomasBroyer Wah .... tahkns在gwt事件上的另一個迷你教程:) –