5

preventDefault でイベントを停止しました。今、私はそれを再び投げたいと思っています。fireEvent を試しましたが、うまくいきませんでした。これを達成する方法はありますか?

更新 fire イベントの代わりに、イベントの新しいインスタンスを作成し、elem.dispatchEvent(clickEvent); を使用しました。

    Event.addNativePreviewHandler(new Event.NativePreviewHandler()
    {
        public void onPreviewNativeEvent(NativePreviewEvent event) 
        {

            if (event.getTypeInt() == Event.ONMOUSEDOWN)
            {
                Element elem = JSHelper.elementFromPoint(event.getNativeEvent().getClientX(), event.getNativeEvent().getClientY());
                EventListener listener = Event.getEventListener(elem);
                if((listener instanceof ListBox))
                {
                    event.getNativeEvent().preventDefault();



                ////    ((ListBox) listener).fireEvent(event);

                    int y = event.getNativeEvent().getClientY();
                    int x = event.getNativeEvent().getClientX();

                    int screenX = event.getNativeEvent().getScreenX();
                    int screenY = event.getNativeEvent().getScreenY();

                    NativeEvent clickEvent = Document.get().createMouseEvent(
                            "click",true, false,0, screenX, screenY, x, y, false, false,
                            false, false, NativeEvent.BUTTON_LEFT, elem);

                    elem.dispatchEvent(clickEvent);



                }
            }
        }
    });
4

1 に答える 1