2011-02-26 2 views
6

요소 노드의 모든 속성을 가져올 수있는 com.google.gwt.dom.client.Element 클래스의 메소드를 볼 수 없습니다. 내가 놓친 게 있니?GWT에서 HTML DOM의 요소에 대한 모든 속성을 얻으려면 어떻게해야합니까?

아마도 원시 코드에 드롭하여 기본 자바 스크립트 객체의 속성 배열을 얻을 수 있습니까? 그 결과는 브라우저에 따라 다르다는 것을 알고 있지만, 그에 대한 해결 방법이있는 것 같습니다. 나는 네이티브 JS로 많이 뛰어 들지 않았기 때문에, 누군가가 나에게 어떻게 할 수 있는지 보여 줄 수 있다면, 그것은 보너스가 될 것입니다.

답변

10

나는 GWT에서 편리한 방법을 찾았지만 찾을 수 없다는 것에 놀랐다.

아마도 원시 코드에 드롭하여 기본 Javascript 객체의 속성 배열을 가져올 수 있습니까? 나는

예, JSNI과 함께, 당신은 요소의 적당한 자바 객체로 속성을 "속성"을 반환하는 방법을 정의 할 수 있습니다 ... 결과가 브라우저에 의존 알고 :

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

감사합니다. –

+0

부 지점; elem.attributes는 배열이 아닙니다 (실제로 액세스 할 수 있지만). 실제로는 https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap입니다. –

관련 문제