GWT にはサンクイベントという概念があります。沈められたすべてのイベントが に渡されますが、それらのイベントのみが に渡されEventListener
ますonBrowserEvent
。
最下位レベルでは、 を using にアタッチEventListener
しElement
、イベントをDOM.setEventListener
シンクしDOM.sinkEvents
ます(または最近ではDOM.setBitlessEvents
)。メモリ リークを回避するには (特に、古い IE だけでなくても)、ページをアンロードする前に を必ず設定する必要Element
があります。EventListener
null
AWidget
は でありEventListener
、これらのいくつかを処理します。自動的DOM.setEventListener
にそのonAttach
および を呼び出し、沈没イベントonDetach
を追跡します。これは、作業を容易にするために追加されているため、対応するものがあります。sinkEvents
unsinkEvents
その後、GWT 1.6 でイベント ハンドラーが追加され、addDomHandler
(最近では)適切な値 (引数として渡されたものから取得addBitlessDomHandler
) で自動的に呼び出さ れます。そして、このすべてを機能させるために、ウィジェット内のデフォルトの動作は、登録されたハンドラーにイベントをディスパッチすることです。sinkEvents
DomEvent.Type
onBrowserEvent
これらのビットレスバリアントの理由は、イベントがもともとint
ビットフィールドの定数として参照されていたからですが、ブラウザーにはますます多くのイベントが含まれるため、GWT でビットが不足し始めました。ビットベースのイベントとは対照的に、ウィジェットはどのイベントがそのように登録されているかを追跡せず、.onDetach
GWT 1.6 以降のこれらすべての新しいDomEvent
(ハンドラーを含む) は、 a のラッパーNativeEvent
です。2 種類の があります。ブラウザによってディスパッチされるGwtEvent
ネイティブのもの ( ) と、GWT 自体によってディスパッチされ、DOM レベルでイベントにマップされない論理的なものです。s 、別名ネイティブ イベントのみに関心があります。DomEvent
addDomHandler
DomEvent
まとめ: 変更したばかりのテキスト フィールドを終了すると、ブラウザーはchange
イベントを送出します。TextBox
ウィジェットがそのイベントを沈めた場合、そのイベントを表すonBrowserEvent
で呼び出されますEvent
(これは の単なるレガシー サブクラスですNativeEvent
)。thenのデフォルトの実装はonBrowserEvent
、 を作成し、ChangeEvent
それを登録済みの にディスパッチしChangeHandler
ます。