我想为 webEngine 加载的整个文档添加通用事件侦听器,使用我的 javafx 后端引擎,而不使用任何 javascript。我想接收事件类型(例如,单击或文本区域中的 textchange)和事件源(元素,如 textarea 或按钮),并将这些参数传递给外部 java 事件侦听器以在我的应用程序中执行进一步的操作(这是一个摇摆应用程序)。我该如何做到这一点,而不向所有事件类型添加相同的侦听器?这是简短的代码示例:
//creating "universal" event listener
EventListener eventListener = new EventListener() {
@Override
public void handleEvent(Event evt) {
String type = evt.getType();
EventTarget target = evt.getTarget();
if (target instanceof Element) {
Element source = (Element) target;
externalJavaHandler.handleEvent(type, source);
}
}
}
Document doc = engine.getDocument();
int childrenCount = doc.getChildNodes().getLength();
//assigning same listener to all DOM elements
for (int i = 0; i < childrenCount; i++) {
Node node = doc.getChildNodes().item(i);
//what type should i pass to method instead of "universal"?
((EventTarget) node).addEventListener("universal", eventListener, true);
}