¿Cuánto tiempo es demasiado largo para un valor de atributo en HTML?
Estoy usando atributos de datos de estilo HTML5 ( data-foo="bar"
) en una nueva aplicación, y en un lugar sería realmente útil almacenar una buena cantidad de datos (más de 100 caracteres). Si bien sospecho que esta cantidad está bien, plantea la pregunta de cuánto es demasiado.
html
custom-data-attribute
nickf
fuente
fuente
iframe@srcdoc
( MDN (https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe) - [HTML5.2 que contiene un documento completo ( Escuché que te gustaban los documentos, así que (... )Respuestas:
HTML 4
Desde una perspectiva HTML 4, los atributos son una construcción SGML. Sus límites están definidos en la Declaración SGML de HTML 4 :
El valor en cuestión aquí es "ATTSPLEN", que sería el límite en la lista de especificaciones de atributos de un elemento (que debería ser el tamaño total de todos los atributos para ese elemento). Sin embargo, la nota anterior menciona que deben evitarse los límites fijos, por lo que es probable que no haya un límite real que no sea la memoria disponible en la mayoría de las implementaciones.
HTML 5
HTML 5 parece ser diferente, como dice la especificación : "Esta versión de HTML vuelve así a una base no SGML".
Más adelante, al describir cómo analizar HTML 5, aparece el siguiente pasaje ( énfasis agregado):
Así que supongo que esa es tu respuesta.
fuente
Acabo de escribir una prueba que pone una cadena de longitud de 10 millones en un atributo y luego la recupera nuevamente, y funciona bien (Firefox 3.5.2 e Internet Explorer 7)
50 millones hacen que el navegador se cuelgue con el mensaje "Este script está tardando mucho en completarse".
fuente
Realmente no creo que haya ningún límite. Ahora se que puedes hacer
y funciona bien Aunque un poco ilegible.
fuente
De la sintaxis HTML5 doc
Aquí no se ha mencionado un límite en el tamaño del valor del atributo. Así que creo que no debería haber ninguno.
También puede validar su documento contra el
Validador HTML5 (Altamente experimental)
fuente
Nunca he oído hablar de ningún límite en la longitud de los atributos.
En las especificaciones HTML 4.01, en la sección de Atributos no hay nada que mencione ninguna limitación al respecto.
Lo mismo en el HTML 4.01 DTD ; de hecho, hasta donde yo sé, DTD no le permite especificar una longitud para los atributos.
Si no hay nada de eso en HTML 4, no imagino que algo así aparezca para HTML 5, y en realidad tampoco veo ninguna limitación de longitud en la sección de Atributos 9.1.2.3 para HTML 5.
fuente
De http://dev.w3.org/html5/spec/Overview.html#embedding-custom-non-visible-data :
Lo que se usa para analizar / procesar estos valores de atributo data- * tendrá limitaciones.
Resulta que los atributos de datos y los valores se colocan en un objeto DOMStringMap. Esto no tiene límites inherentes.
De http://dev.w3.org/html5/spec/Overview.html#domstringmap :
DOMStringMap es una interfaz con getter, setter, greator y deleter. El setter tiene dos parámetros de tipo DOMString, nombre y valor. El valor es de tipo DOMString que se asigna directamente a una cadena de JavaScript.
De
http://bytes.com/topic/javascript/answers/92088-max-allowed-length-javascript-string:
[nota: Chrome informa que bytes.com es una fuente de malware, así que ten cuidado]
fuente
El SGML define atributos con un conjunto límite de caracteres de 65k, visto aquí: http://www.highdots.com/forums/html/length-html-attribute-175546.html
Aunque por lo que estás haciendo, deberías estar bien. En cuanto a los límites superiores, he visto que jQuery utiliza atributos de datos que también contienen algunos k de datos.
fuente
Probado recientemente en Edge (Versión 81.0.416.58 (64 bits)), y los atributos de datos parecen tener un límite de 64k.
fuente