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

Combien de temps est trop long pour une valeur d’atsortingbut en HTML?

J’utilise des atsortingbuts de données de style HTML5 ( data-foo="bar" ) dans une nouvelle application, et dans un endroit, il serait très pratique de stocker un tas de données (plus de 100 caractères). Bien que je soupçonne que ce montant est correct, cela soulève la question de savoir combien c’est trop?

HTML 4

Dans une perspective HTML 4, les atsortingbuts sont une construction SGML. Leurs limites sont définies dans la déclaration SGML de HTML 4 :

          QUANTITÉ SGMLREF
                   ATTCNT 60 - augmenté -
                   ATTSPLEN 65536 - Ce sont les plus grandes valeurs -
                   LITLEN 65536 - autorisé dans la déclaration -
                   NAMELEN 65536 - Évitez les limites fixes dans les faits -
                   PILEN 65536 - implémentations de HTML UA's -
                   TAGLVL 100
                   TAGLEN 65536
                   GRPGTCNT 150
                   GRPCNT 64

La valeur en question ici est “ATTSPLEN” qui serait la limite de la liste de spécification d’atsortingbut d’un élément (qui devrait être la taille totale de tous les atsortingbuts pour cet élément). La note ci-dessus mentionne que les limites fixes doivent être évitées, cependant, il est probable qu’il n’y ait pas de limite réelle autre que la mémoire disponible dans la plupart des implémentations.

HTML 5

HTML 5 semble être différent, comme le dit la spécification , “Cette version de HTML retourne donc à une base non-SGML.”

Plus loin, lors de la description de l’parsing syntaxique de HTML 5, le passage suivant apparaît:

L’algorithme décrit ci-dessous n’impose aucune limite à la profondeur de l’arborescence DOM générée ou à la longueur des noms de balises, noms d’ atsortingbuts, valeurs d’atsortingbuts , nœuds de texte, etc. Bien que les développeurs soient encouragés à éviter les limites arbitraires, forcera probablement les agents utilisateurs à imposer des contraintes de profondeur d’imbrication.

Donc, je suppose que c’est votre réponse.

Je viens d’ écrire un test qui met une chaîne de 10 millions de longueur dans un atsortingbut, puis la récupère à nouveau, et cela fonctionne très bien (Firefox 3.5.2 et Internet Explorer 7)

50 millions de personnes bloquent le navigateur avec le message “Ce script prend beaucoup de temps à compléter”.

Je pense vraiment qu’il n’y a aucune limite. Je sais maintenant que tu peux faire

  

et ça marche bien Bien qu’un peu illisible.

De la syntaxe HTML5 doc

9.1.2.3 Atsortingbuts

Les atsortingbuts d’un élément sont exprimés à l’intérieur de la balise de début de l’élément.

Les atsortingbuts ont un nom et une valeur. Les noms d’atsortingbut doivent comporter un ou plusieurs caractères autres que les caractères d’espacement, U + 0000 NULL, U + 0022 COTATION (“), U + 0027 APOSTROPHE (‘), U + 003E PLUS GRAND QUE SIGNE (>), U + 002F SOLIDUS (/), et U + 003D EQUALS SIGN (=) caractères, les caractères de contrôle et tous les caractères non définis par Unicode Dans la syntaxe HTML, les noms d’atsortingbut peuvent être écrits avec n’importe quelle combinaison de lettres minuscules et majuscules qui sont une correspondance ASCII insensible à la casse pour le nom de l’atsortingbut.

Les valeurs d’atsortingbut sont un mélange de références de texte et de caractères, sauf avec la ressortingction supplémentaire que le texte ne peut pas contenir une esperluette ambiguë.

Les atsortingbuts peuvent être spécifiés de quatre manières différentes:

  1. Syntaxe d’atsortingbut vide

  2. Syntaxe des valeurs d’atsortingbut non cotées

  3. Syntaxe de valeur d’atsortingbut unique

  4. Syntaxe de valeur d’atsortingbut entre guillemets

Ici, il n’a pas été mentionné de limite à la taille de l’atsortingbut. Donc, je pense qu’il ne devrait y en avoir aucun.

Vous pouvez également valider votre document contre le

HTML5 Validator (hautement expérimental)

Je n’ai jamais entendu parler de limite quant à la longueur des atsortingbuts.

Dans les spécifications HTML 4.01, dans la section sur les atsortingbuts , rien ne mentionne de limitation.

Même chose dans la DTD HTML 4.01 – en fait, à ma connaissance, la DTD ne vous permet pas de spécifier une longueur pour les atsortingbuts.

S’il n’y a rien de cela dans HTML 4, je n’imagine rien de pareil pour HTML 5 – et je ne vois pas non plus de limitation de longueur dans la section Atsortingbuts de 9.1.2.3 pour HTML 5.

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

Chaque élément HTML peut avoir un nombre quelconque d’atsortingbuts de données personnalisés spécifiés, avec une valeur quelconque.

Ce qui est utilisé pour parsingr / traiter ces valeurs d’atsortingbut data * aura des limitations.

Désactive les atsortingbuts de données et les valeurs sont placées dans un object DOMSsortingngMap. Cela n’a pas de limites inhérentes.

De http://dev.w3.org/html5/spec/Overview.html#domssortingngmap :

Remarque: La définition de l’interface DOMSsortingngMap est uniquement destinée aux environnements JavaScript. Les autres liaisons de langage devront définir comment DOMSsortingngMap doit être implémenté pour ces langages

DOMSsortingngMap est une interface avec un getter, un setter, un greator et un deleter. Le setter a deux parameters de type DOMSsortingng, name et value. La valeur est de type DOMSsortingng qui est mappée directement sur une chaîne JavaScript.

De http://bytes.com/topic/javascript/answers/92088-max-allowed-length-javascript-ssortingng:

La longueur maximale d’une chaîne JavaScript est spécifique à l’implémentation.

[note: chrome signale bytes.com comme source de malwares alors, méfiez-vous]

Le SGML Définit les atsortingbuts avec un ensemble de limites de 65k charecters, vu ici: http://www.highdots.com/forums/html/length-html-atsortingbute-175546.html

Bien que pour ce que vous faites, ça devrait aller. En ce qui concerne les limites supérieures, j’ai vu des atsortingbuts de données d’utilisation jQuery contenir également quelques k de données.