GWT Event Preview против обработчика событий - PullRequest
4 голосов
/ 16 августа 2011

Мой вопрос: в чем разница между предварительным просмотром и обработчиком событий в GWT.

Существует функция обратного вызова boolean onEventPreview(Event event) для предварительного просмотра события, а также функция обратного вызова void onBrowserEvent(Event event). Они очень похожи, так что же между ними? Особенно, когда мне вообще следует использовать предварительный просмотр событий, когда обработчик событий работает идеально?

спасибо

Ответы [ 2 ]

6 голосов
/ 16 августа 2011

DOM.addEventPreview(EventPreview preview) позволяет поместить предварительный просмотр события поверх стека событий, который вызывается до того, как будет запущен любой onBrowserEvent(Event event).Таким образом, вы можете поместить некоторую логику до того, как произойдет запуск события.Вы даже можете предотвратить запуск события, вернув false.Например, приведенный ниже пример запрещает браузеру реагировать на события мыши и перемещения мыши (щелкните и перетащите изображение, браузер не будет перетаскивать контур изображения)

    DOM.addEventPreview(new EventPreview() {
        @Override
        public boolean onEventPreview(Event event) {
            switch (DOM.eventGetType(event)){
                case Event.ONMOUSEDOWN:
                case Event.ONMOUSEMOVE:
                    event.preventDefault();
            } 
            return true;
        }
    });

Просто напоминание, добавление eventPreviews следующим образом:амортизируется.Правильный способ сделать это - использовать Event.addNativePreviewHandler(NativePreviewHandler handler)

1 голос
/ 16 августа 2011

Из Javadoc:

Пока этот предварительный просмотр остается на вершине стека, он будет получать все события, прежде чем они будут запущены для своих слушателей. Обратите внимание, что предварительный просмотр события получит все события, в том числе полученные из-за пузырьков, тогда как обычные обработчики событий получают только явно потопленные события.

Вы можете вернуть false из onEventPreview, чтобы отменить событие, и в этом случае обработчики событий не будут запущены.

...