259 votes

Y a-t-il une limite à la longueur des attributs HTML?

Combien de temps est trop long pour une valeur d'attribut en HTML?

J'utilise des attributs de données de style HTML5 ( data-foo="bar" ) dans une nouvelle application, et dans un endroit, il serait vraiment pratique de stocker une bonne quantité de données (plus de 100 caractères). Bien que je soupçonne que ce montant est bon, il soulève la question de combien est trop?

319voto

bobbymcr Points 14916

HTML 4

De HTML 4 point de vue, les attributs sont un document SGML construire. Leurs limites sont définies dans la Déclaration SGML HTML 4:

 QUANTITÉ SGMLREF
 ATTCNT 60 de l'augmentation de l' --
 ATTSPLEN 65536 -- ce sont les valeurs les plus grandes --
 LITLEN 65536 -- autorisés dans la déclaration --
 NAMELEN 65536 -- Évitez les limites fixées dans le réel --
 PILEN 65536 -- implémentations de HTML UA --
 TAGLVL 100
 TAGLEN 65536
 GRPGTCNT 150
 GRPCNT 64

La valeur en question ici est "ATTSPLEN" qui serait à la limite sur un élément de la spécification d'attribut de la liste (qui devrait être la taille totale de tous les attributs de l'élément). La note ci-dessus mentionne que fixe des limites doit être évité, cependant, il est donc probable qu'il n'y a pas de limite autre que la mémoire disponible dans la plupart des implémentations.

HTML 5

HTML 5 semble être différent, que la spec dit, "Cette version de HTML revient donc à un non-SGML."

Plus tard, lors de la description de comment analyser le HTML 5, le passage suivant s'affiche (emphase ajoutée):

L'algorithme décrit ci-dessous endroits pas de limite sur la profondeur de l'arborescence DOM produit, ou sur la longueur de labalise des noms, des noms d'attribut, attribut les valeurs, les nœuds de texte, etc. Alors que les réalisateurs sont encouragés à éviter limites arbitraires, il est reconnu que des préoccupations d'ordre pratique sera probablement la force de l'utilisateur des agents d'imposer de nidification la profondeur de contraintes.

Donc je suppose que c'est votre réponse.

181voto

nickf Points 185423

Je viens d' écrire un test qui met une chaîne de longueur de 10 millions dans un attribut puis le récupère à nouveau, et ça marche bien (Firefox 3.5.2 et Internet Explorer 7)

50 millions font flancher le navigateur avec le message "Le script prend beaucoup de temps à terminer".

6voto

rahul Points 84185

De HTML5 syntaxe doc

9.1.2.3 Attributs

Les attributs d'un élément sont exprimé à l'intérieur de l'élément de départ la balise.

Les attributs ont un nom et une valeur. Les noms d'attribut doit être composé d'un ou de plus de caractères autres que l'espace les caractères U+0000 NULL, U+0022 GUILLEMET ("), U+0027 APOSTROPHE ('), U+003E SIGNE SUPÉRIEUR À (>), U+002F BARRE oblique (/), et U+003D est ÉGAL à SIGNE (=) les personnages, le contrôle les caractères et les caractères qui ne sont pas définies par Unicode. Dans le La syntaxe de HTML, les noms d'attribut peut être écrit avec un mélange de bas - et les lettres majuscules qui sont un ASCII insensibles à la casse de match pour l' l'attribut nom.

Les valeurs d'attribut sont un mélange de texte et des références, sauf avec la restriction supplémentaire que l' le texte ne peut pas contenir un ambiguë esperluette.

Les attributs peuvent être spécifiés dans les quatre différentes façons:

  1. Vide de la syntaxe d'attribut

  2. Non cotées valeur de l'attribut de la syntaxe

  3. Seule cité, la valeur de l'attribut de la syntaxe

  4. Double-cité valeur de l'attribut de la syntaxe

Ici, il n'a pas mentionné une limite sur la taille de la valeur de l'attribut. Donc, je pense qu'il devrait y en avoir aucun.

Vous pouvez également valider votre document contre la

Validateur HTML5(Très Expérimental)

3voto

Dean Toader Points 2228

À partir de http://dev.w3.org/html5/spec/Overview.html#embedding-custom-non-visible-data:

Chaque élément HTML peut avoir un nombre quelconque d'attributs de données personnalisés spécifiés, avec n'importe quelle valeur.

Ce qui est utilisé pour analyser/traitement de ces données, -* les valeurs d'attribut aura les limites.

Il s'avère que les données d'attributs et de valeurs sont placées dans un DOMStringMap objet. Cela n'a pas de limites inhérentes.

À partir de http://dev.w3.org/html5/spec/Overview.html#domstringmap:

Remarque: Le DOMStringMap définition de l'interface, ici, n'est prévue que pour le JavaScript les environnements. D'autres liaisons de langage devra définir comment DOMStringMap est mise en œuvre pour les langues

DOMStringMap est une interface avec un getter, setter, greator et de la deleter. Le setter a deux paramètres de type DOMString, le nom et la valeur. La valeur est de type DOMString qui est directement mappée à un JavaScript Chaîne.

D' http://bytes.com/topic/javascript/answers/92088-max-allowed-length-javascript-string:

La longueur maximale d'un JavaScript Chaîne est mise en œuvre spécifique.

[ note: le chrome est de reporting bytes.com en tant que source de logiciels malveillants alors, méfiez-vous ]

2voto

Pascal MARTIN Points 195780

Je n'ai jamais entendu de toute limite à la longueur des attributs.

Dans le code HTML 4.01 caractéristiques, dans la section sur les Attributs, il n'y a rien qui mentionnent aucune limitation sur ce.

Même dans le DTD HTML 4.01 -- en fait, autant que je sache, les DTD ne vous permet pas de spécifier une longueur d'attributs.

Si il n'y a rien à ce sujet dans le HTML 4, je ne peux pas imaginer quelque chose comme ça semble pour le HTML 5 -- et en fait je ne vois pas de limitation de longueur dans le 9.1.2.3 Attributs section HTML 5.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X