Welche Zeichen sind in HTML-Attributname = Wert- Paaren für den Teil 'Name' zulässig? ..... Bei Betrachtung einiger allgemeiner Attribute scheint es, dass nur Buchstaben (az und AZ) verwendet werden, aber welche anderen Zeichen könnten auch erlaubt sein? ... vielleicht Ziffern (0-9), Bindestriche (-) und Perioden (.) ... gibt es dafür eine Spezifikation?
html
specifications
name-value
Robin Rodricks
quelle
quelle
Antworten:
Es kommt darauf an, was Sie unter "erlaubt" verstehen. Jedes Tag hat eine feste Liste von Attributnamen, die gültig sind, und in HTML wird die Groß- und Kleinschreibung nicht berücksichtigt. In einem wichtigen Sinne sind nur diese Zeichen in der richtigen Reihenfolge "erlaubt".
Eine andere Sichtweise ist, welche Zeichen Browser als gültigen Attributnamen behandeln. Der beste Rat hier stammt aus der Parser-Spezifikation von HTML 5, die hier zu finden ist: https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
Es heißt, dass alle Zeichen außer Tabulator, Zeilenvorschub, Formularvorschub, Leerzeichen, Solidus, Größer als Vorzeichen, Anführungszeichen, Apostroph und Gleichheitszeichen als Teil des Attributnamens behandelt werden. Persönlich würde ich jedoch nicht versuchen, die Randfälle zu verschieben.
quelle
/([^\t\n\f \/>"'=]+)/
data-foo
als Attributname haben, haben Sie Probleme mit derMyElem.data-foo;
Verwendung von JavaScriptMyElem.getAttribute("data-foo");
Angenommen, Sie sprechen von XHTML, gelten die XML-Regeln.
Siehe http://www.w3.org/TR/2008/REC-xml-20081126/#NT-Name
Namen und Token
[4] NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] [4a] NameChar ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040] [5] Name ::= NameStartChar (NameChar)* [6] Names ::= Name (#x20 Name)* [7] Nmtoken ::= (NameChar)+ [8] Nmtokens ::= Nmtoken (#x20 Nmtoken)*
quelle
document.body.setAttribute('\u1fff', 1)
- das wird ein Fehler sein.Seit diese Frage gestellt wurde, hat sich das Web ziemlich weiterentwickelt. Es ist wahrscheinlich, dass Autoren von Webkomponenten (benutzerdefinierte Elemente) hier landen, um herauszufinden, welche gültigen Namen beim Definieren von Attributen für benutzerdefinierte Elemente verwendet werden können.
Es gibt hier einige Antworten, die teilweise richtig sind, daher werde ich versuchen, sie zu aggregieren und basierend auf den neuesten Spezifikationen zu aktualisieren.
Erstens können Attributnamen in HTML5 mit den meisten Zeichen beginnen und sind viel freizügiger als in früheren HTML-Versionen. Die Antwort von @ S.Lott ist korrekt für HTML 2 und XHTML, jedoch nicht für HTML5.
Für HTML5: ( spec )
Abgesehen davon sind andere Kommentatoren hier korrekt. Wenn Sie ein Attribut für ein integriertes Element verwenden, das nicht in der Liste der gültigen Attribute enthalten ist, verstoßen Sie technisch gegen die Spezifikation. Browser-Autoren haben jedoch eine große Toleranz dafür, so dass es in der Praxis nicht (viel?) Schaden anrichtet. Viele Bibliotheken nutzen dies, um reguläre HTML-Tags zu verbessern, was zu Verwirrung führt, da es sich technisch gesehen nicht um gültiges HTML handelt. HTML5 bietet einen Mechanismus für benutzerdefinierte Daten in Attributen unter Verwendung der Namenskonvention für Datenattribute.
Diese Regeln unterscheiden sich für benutzerdefinierte Elemente.
Benutzerdefinierte Elementautoren können beliebige Attribute für ihr Element implementieren. Die Namen der Attribute sind jedoch restriktiver als bei HTML5. Tatsächlich erfordert die Spezifikation , dass der Attributname den Einschränkungen des XML-Namens entspricht :
Für benutzerdefinierte Elementnamen können Sie also den oberen / unteren alphanumerischen Wert, den Unterstrich "_", den Doppelpunkt ":" oder eines der in der Spezifikation genannten Unicode-Zeichen als Startzeichen verwenden und dann "-", Punkte "einfügen. ", alpha etc ... als Körperzeichen.
quelle
Vielleicht fehlt mir etwas, aber ich glaube, die Frage basiert auf einer falschen Annahme. In HTML, sind Attribute streng definiert nach einer festgelegten Spezifikation. Wenn Sie Ihre eigenen Attributnamen "erfinden", schreiben Sie kein gültiges HTML mehr.
quelle
Die zulässigen Werte sind auf w3.org aufgeführt . Wenn Sie ein benutzerdefiniertes Attribut hinzufügen, schreiben Sie kein HTML mehr.
quelle
data-
Attribute angeben können .