2011-02-26 66 views
6

我在com.google.gwt.dom.client.Element類中看不到任何方法,它允許我獲取元素節點的所有屬性。我錯過了什麼?在GWT中,如何獲取HTML DOM中元素的所有屬性?

大概我可以通過放入本機代碼來獲得底層Javascript對象的屬性數組?我知道結果是依賴於瀏覽器的,但似乎已知的解決方法。我沒有深入到原生JS,所以如果有人能告訴我如何去做,那將是一個獎金。

回答

10

我在GWT尋找一種方便的方法,但很驚訝,我找不到一個。

大概我可以通過放入本機代碼來獲取底層JavaScript對象的屬性數組?我知道結果是依賴於瀏覽器,...

是的,JSNI,您可以定義返回元素的「屬性」屬性作爲一個合適的Java對象的方法:

public static native JsArray<Node> getAttributes(Element elem) /*-{ 
    return elem.attributes; 
}-*/; 

你可以像這樣使用它:

final JsArray<Node> attributes = getAttributes(element); 
for (int i = 0; i < attributes.length(); i ++) { 
    final Node node = attributes.get(i); 
    String attributeName = node.getNodeName(); 
    String attributeValue = node.getNodeValue(); 
    ... 
} 
+0

謝謝,我會給它一個。 – 2011-02-27 08:43:18

+0

小點; elem.attributes不是一個數組(儘管它可以像一個訪問) - 它實際上是一個https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap – 2013-06-12 05:38:26