Как долго это слишком долго для значения атрибута в HTML?
Я использую атрибуты данных в стиле HTML5 ( data-foo="bar"
) в новом приложении, и в одном месте было бы очень удобно хранить большое количество данных (более 100 символов). Хотя я подозреваю, что с этой суммой все в порядке, возникает вопрос, сколько это слишком много?
iframe@srcdoc
( MDN (https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe) - [HTML5.2, который содержит целый документ ( Я слышал, что вам так понравились документы (…) )Ответы:
HTML 4
С точки зрения HTML 4, атрибуты являются конструкцией SGML. Их пределы определены в декларации SGML HTML 4 :
Здесь рассматривается значение «ATTSPLEN», которое будет ограничением в списке спецификаций атрибутов элемента (который должен быть общим размером всех атрибутов для этого элемента). В приведенном выше примечании упоминается, что следует избегать фиксированных пределов, поэтому, скорее всего, в большинстве реализаций нет никакого реального предела, кроме доступной памяти.
HTML 5
HTML 5 кажется другим, как говорится в спецификации : «Таким образом, эта версия HTML возвращается к не-SGML-основе».
Позже, при описании того, как анализировать HTML 5, появляется следующий отрывок ( выделение добавлено):
Итак, я полагаю, это ваш ответ.
источник
Я только что написал тест, который помещает строку длиной 10 миллионов в атрибут, а затем извлекает ее снова, и она отлично работает (Firefox 3.5.2 и Internet Explorer 7)
50 миллионов заставляют браузер зависать с сообщением «Этот сценарий занимает много времени».
источник
Я действительно не думаю, что есть какие-либо ограничения. Теперь я знаю, что вы можете сделать
и работает нормально. Хотя и немного нечитабельно.
источник
Из документа HTML5 синтаксиса
Здесь не упоминается ограничение на размер значения атрибута. Поэтому я думаю, что не должно быть ни одного.
Вы также можете проверить свой документ по
HTML5 Validator (очень экспериментальный)
источник
Я никогда не слышал о каких-либо ограничениях на длину атрибутов.
В спецификациях HTML 4.01 в разделе «Атрибуты» нет ничего, что упоминало бы какие-либо ограничения на это.
То же самое в HTML 4.01 DTD - фактически, насколько я знаю, DTD не позволяет вам указывать длину для атрибутов.
Если в HTML 4 об этом ничего нет, я не представляю, что подобное появилось бы для HTML 5 - и я на самом деле не вижу никаких ограничений длины в разделе Атрибуты 9.1.2.3 для HTML 5.
источник
Из http://dev.w3.org/html5/spec/Overview.html#embedding-custom-non-visible-data :
То, что используется для анализа / обработки этих значений атрибута data- *, будет иметь ограничения.
Оказывается, атрибуты данных и значения помещаются в объект DOMStringMap. Это не имеет внутренних ограничений.
С http://dev.w3.org/html5/spec/Overview.html#domstringmap :
DOMStringMap - это интерфейс с методами получения, установки, изменения и удаления. Сеттер имеет два параметра типа DOMString, name и value. Значение имеет тип DOMString, который отображается непосредственно в строку JavaScript.
Из
http://bytes.com/topic/javascript/answers/92088-max-allowed-length-javascript-string:
[примечание: chrome сообщает bytes.com как источник вредоносного ПО, так что будьте осторожны]
источник
SGML определяет атрибуты с набором пределов в 65 тыс. Символов, с которым можно ознакомиться здесь: http://www.highdots.com/forums/html/length-html-attribute-175546.html.
Хотя за то, что ты делаешь, у тебя все должно быть хорошо. Что касается верхних пределов, я видел, что jQuery использует атрибуты данных, которые также содержат несколько тысяч данных.
источник
Протестировано недавно в Edge (версия 81.0.416.58 (64 бита)), и атрибуты данных, кажется, имеют ограничение в 64 КБ.
источник