2012-08-29 30 views
3

我已使用preventDefault停止事件。現在我想重新拋出它。我嘗試了fireEvent,但沒有奏效。有沒有辦法做到這一點?預防後重新啓動事件默認

UPDATE代替火災事件,我創建了一個新的事件實例,並使用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); 



       } 
      } 
     } 
    }); 
+1

我沒有使用gwt,所以我無法提供答案,但對於普通的JavaScript(儘管在符合標準的瀏覽器中),MDN有[[element .dispatchEvent()'](https://developer.mozilla.org/en-US/docs/DOM/element.dispatchEvent)。 –

+0

謝謝。我試過了我得到: (DISPATCH_REQUEST_ERR):DISPATCH_REQUEST_ERR:DOM事件異常1,我使用它:如果Event對象已經在樹中分派了。我使用的瀏覽器是鉻 – Spiff

+0

它看起來像是如果我創建一個新的事件實例,然後我沒有得到例外,但它仍然無法正常工作。 – Spiff

回答

0

爲什麼你試着再次開火?只是嘗試調用事件處理程序函數,你應該