2010-03-21 106 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