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 en un seul endroit, il serait vraiment pratique de stocker un bon nombre de données (jusqu'à 100 caractères). Bien que je soupçonne que ce montant est correct, cela soulève la question de savoir combien est trop?
iframe@srcdoc
( MDN (https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe) - [HTML5.2 qui contient un document entier ( J'ai entendu dire que vous aimiez les documents, alors (…) )Réponses:
HTML 4
Du point de vue HTML 4, les attributs sont une construction SGML. Leurs limites sont définies dans la déclaration SGML de HTML 4 :
La valeur en question ici est "ATTSPLEN" qui serait la limite sur la liste de spécification d'attribut d'un élément (qui devrait être la taille totale de tous les attributs pour cet élément). La note ci-dessus mentionne cependant que les limites fixes doivent être évitées, il est donc 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 revient donc à une base non SGML."
Plus tard, en décrivant comment analyser HTML 5, le passage suivant apparaît ( soulignement ajouté):
Donc je suppose que c'est votre réponse.
la source
Je viens d' écrire un test qui met une chaîne de 10 millions de long dans un attribut, puis le récupère à nouveau, et cela fonctionne très bien (Firefox 3.5.2 & Internet Explorer 7)
50 millions font que le navigateur se bloque avec le message "Ce script est long à terminer".
la source
Je ne pense vraiment pas qu'il y ait de limite. Je sais que maintenant tu peux faire
et ça marche bien. Quoique un peu illisible.
la source
Du document de syntaxe HTML5
Ici, il n'y a pas mentionné de limite sur la taille de la valeur d'attribut. Je pense donc qu'il ne devrait pas y en avoir.
Vous pouvez également valider votre document par rapport au
Validateur HTML5 (hautement expérimental)
la source
Je n'ai jamais entendu parler de limite sur la longueur des attributs.
Dans les spécifications HTML 4.01, dans la section Attributs , rien ne mentionne de limitation à ce sujet.
Idem dans la DTD HTML 4.01 - en fait, pour autant que je sache, la DTD ne vous permet pas de spécifier une longueur pour les attributs.
S'il n'y a rien à ce sujet dans HTML 4, je n'imagine rien de tel qui pourrait apparaître pour HTML 5 - et je ne vois en fait aucune limitation de longueur dans la section Attributs 9.1.2.3 pour HTML 5 non plus.
la source
Depuis http://dev.w3.org/html5/spec/Overview.html#embedding-custom-non-visible-data :
Ce qui est utilisé pour analyser / traiter ces valeurs d'attribut data- * aura des limites.
Il s'avère que les attributs de données et les valeurs sont placés dans un objet DOMStringMap. Cela n'a pas de limites inhérentes.
Depuis http://dev.w3.org/html5/spec/Overview.html#domstringmap :
DOMStringMap est une interface avec un getter, setter, greator et deleter. Le setter a deux paramètres de type DOMString, nom et valeur. La valeur est de type DOMString qui est mappée directement à une chaîne JavaScript.
De
http://bytes.com/topic/javascript/answers/92088-max-allowed-length-javascript-string:
[note: chrome signale bytes.com comme une source de malware donc méfiez-vous]
la source
Le SGML définit les attributs avec un ensemble limité de 65 000 caractères, voir ici: http://www.highdots.com/forums/html/length-html-attribute-175546.html
Bien que pour ce que vous faites, ça devrait aller. En ce qui concerne les limites supérieures, j'ai vu que jQuery utilise des attributs de données contenant également quelques k de données personnellement.
la source
Testé récemment dans Edge (version 81.0.416.58 (64 bits)), et les attributs de données semblent avoir une limite de 64 Ko.
la source