我正在尝试在GWT中实现点击日志记录系统,所以我知道人们在我的应用程序中的位置。
我希望能够自动执行此操作而不将处理程序添加到每个Button?
我在Composite
课程中尝试过:
this.addDomHandler(new ClickHandler() {...}, ClickEvent.getType());
但是ClickEvent
没有给我任何关于点击内容的细节。以下不起作用。
NodeList<Element> elements = Document.get().getElementsByTagName("a");
EventListener el = new EventListener() {
@Override
public void onBrowserEvent(Event event) {
System.out.println(event.toString());
}
};
for (int i = 0; i < elements.getLength(); i++) {
Element e = elements.getItem(i);
com.google.gwt.user.client.Element castedElem = (com.google.gwt.user.client.Element) e;
DOM.sinkEvents(castedElem, Event.ONCLICK);
DOM.setEventListener(castedElem, el);
}
任何提示?
答案 0 :(得分:1)
看看这里:
Notice every click in a gwt application
这将在您的应用程序中的每次点击时调用。
所以,如果你有这个代码:
Event.addNativePreviewHandler(new NativePreviewHandler() {
@Override
public void onPreviewNativeEvent(NativePreviewEvent event) {
if (event.getNativeEvent().getType().equals("click")) {
Element eventTarget = DOM.eventGetTarget(Event.as(event.getNativeEvent()));
// check if eventTarget is an a-tag
}
}
});
每次点击鼠标,您都会收到一个事件。如果点击了a-tag,则将事件视为事件以查看。
希望有所帮助。