2012-08-29 3 views
3

preventDefault를 사용하여 이벤트를 중지했습니다. 이제 나는 그것을 다시 던지기를 원한다. fireEvent를 시도했지만 작동하지 않았습니다. 이것을 달성 할 수있는 방법이 있습니까?preventDefault 후 이벤트 재발행

업데이트 화재 이벤트 대신 새 이벤트 인스턴스를 만들고 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, 나는 그것을 봤다 : 이벤트 개체가 이미 트리에서 발송됩니다. 내가 사용하는 브라우저는 크롬입니다 – Spiff

+0

이벤트의 새 인스턴스를 만든 다음 예외가 발생하지 않는 것처럼 보입니다. 그러나 여전히 작동하지 않습니다. – Spiff

답변

0

왜 다시 시도하나요?