GWT-Element setAttribute vs setPropertyString
Ich kann nicht feststellen, der Unterschied zwischen Element.setAttribute(String name, String value)
und Element.setPropertyString(String name, String value)
. Gibt es einen Unterschied? Was ist vorzuziehen, wenn Sie versuchen, sagen wir, ein Platzhalter für einen text-input? Ich habe seit getElement().setPropertyString("placeholder", "this is a placeholder");
und es funktioniert, aber ist das der geeignete Weg, es zu tun?
In der Dokumentation für DOM, setAttribute(Element, String, String)
veraltet ist, sagen, zu verwenden, "die mehr treffend benannt setElementProperty(Element, String, String)
statt." Folgt daraus, dass man mit der ähnlich benannten Methoden der Element
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem ist, dass im IE6 und IE7 (und IE8 im Kompatibilitätsmodus),
setAttribute
tatsächlich setzt die Eigenschaft (DH nicht wirklich einen Unterschied machen; IE8 Hinzugefügt eine optionale argumentgetAttribute
zu ermöglichen das abrufen des Attributs gemäß der Definition in der DOM-Spezifikation; siehe http://msdn.microsoft.com/en-us/library/ms536429v=vs.85.aspx).BTW, deine JavaDoc-Referenz sein sollte http://google-web-toolkit.googlecode.com/svn/javadoc/latest/index.html (nicht für GWT 1.5, das ist stark veraltet), und Sie sollten
com.google.gwt.dom.client.Element
eher alscom.google.gwt.user.client.DOM
.Element
hat einesetAttribute
setzt das Attribut in jeden anderen browser als IE6/7 (oder ähnliche Modi der IE8).Aber die meisten der Zeit, sollten Sie nur die Arbeit mit den DOM-Eigenschaften, eher als Attribute. Zum Beispiel, Sie wollen den
tab index
als Zahl, nicht als string. Und Sie wollen, dass der default-Wert/Status für eine Immobilie in der Abwesenheit des Attributs, nicht einnull
, dass Sie würde haben, um selbst zu behandeln (z.B. eineinput
element standardmäßigtype=text
wenn es keinetype
Attribut;getAttribute("type")
zurückkehren würdenull
in der Erwägung, dassgetPropertyString("type")
zurückkehren würde"text"
).getAttribute
"Gibt: Die Attr-Wert als string, oder die leere Zeichenkette, wenn das Attribut nicht angegeben wurde oder der default-Wert", nicht null ist, aber das hat keinen Einfluss auf den rest der Antwort. +1removeAttribute()
, aber keineremoveProperty()
. Sagen, ich habe<input type="number" step="3" max="6">
und wollte entfernen Sie diemax
Einschränkung. Wie sollte das erreicht werden?null
auch). Siehe dev.w3.org/html5/spec/... und dev.w3.org/html5/spec/...Gibt es einen Unterschied zwischen Parametern und Eigenschaften. Kurz gesagt: das Attribut stellt den ursprünglichen Zustand, während die Immobilie stellt immer den aktuellen Zustand an.
Sehen http://jquery-howto.blogspot.com/2011/06/html-difference-between-attribute-and.html für eine detaillierte Erklärung.
In GWT Aufruf von setAttribute ruft die native javascript-Funktion setAttribute auf das aktuelle element. Aufruf von setProperty... setzen Sie die Eigenschaft auf das aktuelle element.
In der Vergangenheit in den meisten Browsern das gleiche, aber mit der sich entwickelnden standards diese Schritte zum ändern gemeldet.
Ich weiß wirklich nicht, alle die kleinen Unterschiede zwischen den browser-Implementierungen, aber zu verfolgen, den Unterschied konnte man sich verlassen, auf die verschiedenen DOM-Level-Spezifikationen: http://www.w3.org/TR/DOM-Level-2-HTML/ http://www.w3.org/TR/DOM-Level-3-Core/
Auch die Mozilla-docs sind auf setAttribute sind ganz konnte und Staat, den Unterschied für firefox: https://developer.mozilla.org/en/DOM/element.setAttribute
So, in Zusammenfassung: wenn Sie mit setAttribute in GWT, Sie verlassen sich auf die browser setAttribute Umsetzung, die etwas die defualt Einstellung Wert (auf bestimmte Eigenschaften, und nicht die Aktualisierung einen Wert), so normalerweise Sie wollen setProperty...