2013-04-14 10 views
7

Tarayıcı olayı tam olarak nedir? Örneğin, onBrowserEvent öğesini geçersiz kılan tek bir düğme içeren özel bir widget'ım varsa. Ve onBrowserEvent yöntemi sadece düğmeye tıkladığınızda çağrılır. Sana DomHandler bir widget varsayılan olarak desteklemediği bir olaya dinlemelerini sağlamak için eklerken Ayrıca ... Bu olay vb onMouseOver, onMouseOut, keyPressed gibi tüm etkinlikler için çağrılırGWT için tam olarak BrowserEvent ve NativeEvent nedir?

düşündük. Dokümanlarda "Widget'a bir yerel etkinlik işleyicisi ekler ve karşılık gelen yerel etkinliği bozar" Bu bağlamda yerel etkinlikten ne demek istiyorsunuz?

Teşekkür

cevap

13

GWT battı olayların bir kavram vardır. Tüm olayları battı, ama sadece bu, bir EventListener 'ın onBrowserEvent geçirilir. en düşük seviyede

, bir EventListener ( DOM.setBitlessEvents veya daha yakın) DOM.sinkEvents ile DOM.setEventListener ve alıcıyı olayları kullanarak Element bir eklemek. bellek sızıntılarını (özellikle -eğer eski IE'lerin içinde yalnızca-değil) önlemek için, yapmak zorunda emin sayfa kaldırır önce bir Element 'ın EventListener null ayarlı.

A Widget bir EventListener ve sizin için bu şeylerden birkaçı kolları: otomatik içinde DOM.setEventListener çağırır onun onAttach ve onDetach ve battı olaylar izler: onun sinkEvents ile çalışmak daha kolay hale getirmek için katkı maddesidir ve dolayısıyla bir unsinkEvents muadili bulunmaktadır.

Daha sonra, GWT 1.6, olay işleyicileri eklendi ve addDomHandler (ve daha yakın zamanda addBitlessDomHandler) otomatik olarak (bir argüman olarak geçmiş DomEvent.Type alınan) uygun değerlerle sinkEvents çağırır; ve bu çalışmanın tüm yapmak, widget'larda onBrowserEvent varsayılan davranışı kayıtlı işleyicileri için olaylar gönderir etmektir.

bu bitless varyantları nedeni olaylar aslında bir saklayıcısında içinde int sabitler olarak anılacaktır olduğunu, ancak GWT bit tükenmeye başladı böylece tarayıcılar daha fazla etkinlik var. widget'ları olaylar aykırı bit tabanlı olaylara, onların onDetach onları kaydını bu şekilde tescil edildiği kaydını tutma gibi bitless varyantları, değil sızıntı yapmak tarayıcılar için sadece kullanılabilir. GWT 1.6 ile başlayan (kendi işleyicileriyle)

Bütün bu yeni DomEvent s NativeEvent etrafında sarma bulunmaktadır. Tarayıcı tarafından gönderilen GwtEvent s türünde iki tür vardır: tarayıcı tarafından gönderilen ve mantıksal olanlar GWT tarafından gönderilen ve DOM düzeyindeki olaylarla eşlenmemiş olan . addDomHandler aka DomEvent s, yerli olaylar hakkında sadece ilgilenmektedir. tamamlayan

: Eğer sadece modifiye bir metin alanını çıktığınızda, tarayıcı bir change olayı gönderir.TextBox tarihinde, bu etkinliğin sunta sunta sahip olması durumunda, , o olayı temsil eden Event (yalnızca NativeEvent'un eski bir alt sınıfıdır) ile çağrılacaktır. onBrowserEvent'un varsayılan uygulaması daha sonra bir ChangeEvent oluşturur ve kayıtlı ChangeHandler s'ye gönderir.

+0

Tam olarak battı olayları nedir? "Widget bu olayı batırdı" derken, bu tam olarak ne anlama geliyor? – Mayumi

+2

Türkçe fiil: lavabo/batma/batma. GWT bağlamında bir olay, argüman olarak kodu ile "sinkEvents" çağrılmışsa _sunk_ olur. –

+0

@ThomasBroyer Wah .... gwt olayları hakkında başka bir mini öğretici için tahkns :) –