2011-02-26 11 views
6

No puedo ver ningún método en la clase com.google.gwt.dom.client.Element que me permita obtener todos los atributos de un nodo de elementos. ¿Me he perdido algo?En GWT, ¿cómo puedo obtener todos los atributos de un elemento en el HTML DOM?

¿Presumiblemente puedo obtener la matriz de atributos del objeto JavaScript subyacente al incluir el código nativo? Sé que los resultados dependen del navegador, pero parece que hay soluciones conocidas para eso. No he buceado mucho en JS nativo, así que si alguien puede mostrarme cómo hacerlo, sería una ventaja.

Respuesta

10

Busqué un método de conveniencia en GWT, pero me sorprendió que no pudiera encontrar uno.

¿Presumiblemente puedo obtener la matriz de atributos del objeto JavaScript subyacente al incluir el código nativo? Sé que los resultados son dependientes del navegador, ...

Sí, con JSNI, se puede definir un método que devuelve el elemento de "atributos" propiedad como un objeto Java adecuada:

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

Usted puede usarlo así:

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

Gracias, lo intentaré. –

+0

punto menor; elem.attributes no es una matriz (aunque se puede acceder como uno) - en realidad es un https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap –

Cuestiones relacionadas