¿Cómo agregar un controlador de eventos en todos los elementos div con GWT? probé el siguiente código, pero las alertas de la ventana no se disparan hacia arriba (pero la clase "etvoila" ha establecido una):GWT: Agregue un controlador de eventos en todos los elementos div
private NodeList<Element> pageDIVElements;
public void initDiv() {
MyDIVEventHandler handler = new MyDIVEventHandler();
pageDIVElements = Document.get().getElementsByTagName("div");
for (int i = 0; i < pageDIVElements.getLength(); i++) {
Element elem = pageDIVElements.getItem(i);
elem.addClassName("etvoila");
com.google.gwt.user.client.Element castedElem = (com.google.gwt.user.client.Element) elem;
DOM.setEventListener(castedElem, handler);
}
class MyDIVEventHandler implements EventListener {
private Element divElement;
@Override
public void onBrowserEvent(Event event) {
Window.alert("Yeepee");
if (event.equals(Event.ONMOUSEOVER)) {
Window.alert("ONMOUSEOVER");
divElement = Element.as(((NativeEvent) event).getEventTarget());
divElement.setPropertyString("background-color", "#C6D4E6");
} else if (event.equals(Event.ONMOUSEOUT)) {
divElement = Element.as(((NativeEvent) event).getEventTarget());
divElement.setAttribute("background-color", "");
}else if (event.equals(Event.ONCLICK)) {
divElement = Element.as(((NativeEvent) event).getEventTarget());
divElement.setAttribute("background-color", "");
Window.alert("ONCLICK");
}
}
}
Qué está mal en este método?
¿Cómo utilizar su solución en el código? No puedo hacer que funcione. – djondal
Agregue lo siguiente antes de la línea "DOM.setEventListener (castedElem ..." : DOM.sinkEvents (castedElem, Event.ONCLICK | Event.ONMOUSEOUT | Event.ONMOUSEOVER); –
Debe enviar elem a com.google. gwt.user.client.Element –