2010-03-21 107 views
4

请指点一些教程或其他有关的解释示例,如何使用Java DOM实现注册和使用修改侦听器Java + DOM:注册和使用修改侦听器:教程?

在网上我只找到Javascript或Flex的例子。

我的目标是了解Node何时被修改。

我尝试了几种方法,没有任何工作。 Java的DOM不支持这个功能吗?

+0

它有一个API,'org.w3s.dom.events'。根据DOM的实现,它可能会或可能不会被支持。通过LiveConnect提供的applet托管网页的DOM实现目前不支持Sun/Oracle实施。 – 2010-03-21 15:07:20

+0

视实施情况而定:就是这一点。 DOM **的**标准JDK实现是否支持这个? – 2010-03-21 15:13:24

回答

7

Got it!

铸造是诀窍!

我正在寻找org.w3.dom.events.EventTarget的实现,但似乎只有内部类实现它。所以它只需要手动输入(只需假设Node instanceof EventTarget)。

org.w3c.dom.events.EventListener myModificationListener = 
    new org.w3c.dom.events.EventListener() { 

    @Override 
    public void handleEvent(Event e) { 
     if (e instanceof MutationEvent) { 
     MutationEvent me = (MutationEvent) e; 
     System.out.println("type: " + me.getType() 
      + ", dest: " + me.getTarget()); 
     } 
    } 

    }; 

Node someDomNode = ... 

// here the unusual casting magic happens 
((EventTarget) node).addEventListener(
    "DOMSubtreeModified", // constant 
    myModificationListener, true); 

// modify the node here by appending a child 
// -> listener gets invoked