Существует ли предел длине HTML-атрибутов?

Во-первых, удобство: лямбды легче читать и записать.

118-секундный, выражения: лямбды могут быть скомпилированы в или делегат, или дерево выражений (Expression<T> для некоторого типа делегата T, такой как Func<int,bool>). Деревья выражений являются более захватывающим, поскольку это - ключ к LINQ к хранилищам данных из процесса.

Func<int,bool> isEven = i => i % 2 == 0;
Expression<Func<int,bool>> isEven = i => i % 2 == 0;

Примечание, что лямбда-выражения с телами оператора могут только быть скомпилированы в делегатов, не Expression с:

Action a = () => { Console.WriteLine(obj.ToString()); };
206
задан Deduplicator 1 February 2015 в 06:26
поделиться

7 ответов

HTML 4

С точки зрения HTML 4, атрибуты являются конструкцией SGML. Их пределы определены в SGML-декларации HTML 4 :

         QUANTITY SGMLREF
                  ATTCNT   60      -- increased --
                  ATTSPLEN 65536   -- These are the largest values --
                  LITLEN   65536   -- permitted in the declaration --
                  NAMELEN  65536   -- Avoid fixed limits in actual --
                  PILEN    65536   -- implementations of HTML UA's --
                  TAGLVL   100
                  TAGLEN   65536
                  GRPGTCNT 150
                  GRPCNT   64

Здесь рассматривается значение "ATTSPLEN", которое будет пределом для списка спецификации атрибутов элемента (который должен быть общим размером всех атрибуты для этого элемента). В примечании выше упоминается, что следует избегать фиксированных ограничений, поэтому вполне вероятно, что в большинстве реализаций нет реального ограничения, кроме доступной памяти.

HTML 5

HTML 5, похоже, отличается от spec говорит: «Таким образом, эта версия HTML возвращается к основе, отличной от SGML».

Позже, при описании синтаксического анализа HTML 5, появляется следующий отрывок ( курсив добавлен):

Описанный ниже алгоритм помещает без ограничений на глубину дерева DOM сгенерировано, или на длине тега имена, имена атрибутов, атрибут значения , текстовые узлы и т. д. Пока разработчикам рекомендуется избегать произвольные ограничения, это признано что практические проблемы, вероятно, заставить пользовательские агенты вводить вложенность ограничения глубины.

Итак, я полагаю, это ваш ответ.

252
ответ дан 23 November 2019 в 04:49
поделиться

Я только что написал test , который помещает строку длиной 10 миллионов в атрибут, а затем снова извлекает ее, и он отлично работает (Firefox 3.5.2 и Internet Explorer 7)

50 миллионов заставляют браузер зависать с сообщением «Этот сценарий занимает много времени для завершения».

139
ответ дан 23 November 2019 в 04:49
поделиться

Я действительно не думаю, что есть предел. Теперь я знаю, что вы можете использовать

<a onclick=" //...insert 100KB of javascript code here">

, и он отлично работает. Хотя немного нечитабельно.

4
ответ дан 23 November 2019 в 04:49
поделиться

From Синтаксис HTML5 doc

9.1.2.3 Атрибуты

Атрибуты для элемента выражается внутри начала элемента tag.

Атрибуты имеют имя и значение. Имена атрибутов должны состоять из одного или больше символов, кроме пробела символы, U + 0000 NULL, U + 0022 ЦИТАТНЫЙ ЗНАК ("), U + 0027 АПОСТРОФ ('), U + 003E БОЛЬШЕ, ЧЕМ ЗНАК (>), U + 002F SOLIDUS (/) и U + 003D РАВНО SIGN (=) символы, управляющие персонажи и любые символы, которые не определены Unicode. в HTML-синтаксис, имена атрибутов могут быть написано любым сочетанием нижнего и прописные буквы, которые являются ASCII соответствие без учета регистра имя атрибута.

Значения атрибутов представляют собой смесь текста и ссылки на символы, кроме дополнительное ограничение, которое текст не может содержать двусмысленные амперсанд.

Атрибуты можно указать в четырех разными способами:

  1. Пустой синтаксис атрибута

  2. Синтаксис значения атрибута без кавычек

  3. Синтаксис значения атрибута в одинарных кавычках

  4. Синтаксис значения атрибута в двойных кавычках

Здесь не упоминается ограничение на размер значение атрибута. Так что я думаю, что их не должно быть.

Вы также можете проверить свой документ с помощью

HTML5 Validator (очень экспериментальный)

3
ответ дан 23 November 2019 в 04:49
поделиться

Я никогда не слышал о каких-либо ограничениях на длину атрибутов.

В спецификациях HTML 4.01, в разделе атрибутов , нет ничего, что упоминало бы какие-либо ограничения на это.

То же самое в HTML 4.01 DTD - на самом деле, насколько мне известно, DTD не позволяет вам указывать длину атрибутов.

Если в HTML 4 об этом нет ничего, я не воображайте, что что-то подобное появится для HTML 5 - и я на самом деле не вижу никаких ограничений длины в разделе 9.1.2.3 Атрибуты для HTML 5.

1
ответ дан 23 November 2019 в 04:49
поделиться

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

Каждый HTML элемент может иметь любое количество заданных пользовательских атрибутов данных с любым значением.

То, что используется для синтаксического анализа / обработки этих значений атрибутов data- *, будет иметь ограничения.

Оказывается, атрибуты данных и значения помещаются в объект DOMStringMap. Это не имеет внутренних ограничений.

Из http://dev.w3.org/html5/spec/Overview.html#domstringmap :

Примечание. Определение интерфейса DOMStringMap здесь предназначено только для JavaScript среды. Привязки других языков должны будут определить, каким будет DOMStringMap. реализован для этих языков

DOMStringMap - это интерфейс с геттером, сеттером, великором и удалителем. У установщика есть два параметра типа DOMString, имя и значение. Значение имеет тип DOMString, который отображается непосредственно в строку JavaScript.

Из http://bytes.com/topic/javascript/answers/92088-max-allowed-length-javascript-string:

Максимальная длина строки JavaScript зависит от реализации.

[примечание: Chrome сообщает о bytes.com как об источнике вредоносного ПО, будьте осторожны]

1
ответ дан 23 November 2019 в 04:49
поделиться

SGML определяет атрибуты с ограниченным набором символов в 65 тыс. Символов, как показано здесь: http://www.highdots.com/forums/html/length-html-attribute-175546.html

Хотя то, что вы делаете, у вас должно быть хорошо. Что касается верхних пределов, я видел, как jQuery использует атрибуты данных, которые также содержат несколько k данных.

0
ответ дан 23 November 2019 в 04:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: