Jak długo jest za długa dla wartości atrybutu w HTML?
Korzystam z atrybutów danych w stylu HTML5 ( data-foo="bar"
) w nowej aplikacji, a w jednym miejscu byłoby bardzo przydatne, aby przechowywać dość dużą ilość danych (powyżej 100 znaków). Chociaż podejrzewam, że ta kwota jest w porządku, rodzi się pytanie, ile to za dużo?
html
custom-data-attribute
pseudonim
źródło
źródło
iframe@srcdoc
( MDN (https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe) - [HTML5.2, który zawiera cały dokument ( Słyszałem, że lubisz dokumenty, więc (…) )Odpowiedzi:
HTML 4
Z perspektywy HTML 4 atrybuty są konstrukcją SGML. Ich ograniczenia są określone w Deklaracji SGML HTML 4 :
Chodzi tu o „ATTSPLEN”, który byłby limitem na liście specyfikacji atrybutów elementu (który powinien być całkowitym rozmiarem wszystkich atrybutów dla tego elementu). W powyższej uwadze wspomniano jednak, że należy unikać ustalonych limitów, więc jest prawdopodobne, że w większości implementacji nie ma rzeczywistego limitu poza dostępną pamięcią.
HTML 5
HTML 5 wydaje się być inny, jak podaje specyfikacja : „Ta wersja HTML powraca więc do wersji innej niż SGML”.
Później, opisując sposób analizowania HTML 5, pojawia się następujący fragment ( wyróżnienie dodane):
Więc przypuszczam, że to twoja odpowiedź.
źródło
Właśnie napisałem test, który umieszcza ciąg o długości 10 milionów w atrybucie, a następnie ponownie go pobiera i działa dobrze (Firefox 3.5.2 i Internet Explorer 7)
50 milionów powoduje zawieszenie się przeglądarki z komunikatem „Ten skrypt zajmuje dużo czasu”.
źródło
Naprawdę nie sądzę, że jest jakiś limit. Wiem, że teraz możesz to zrobić
i działa dobrze. Chociaż trochę nieczytelne.
źródło
Z dokumentu składni HTML5 doc
Tutaj nie wspomniano o limicie wielkości wartości atrybutu. Myślę więc, że nie powinno być.
Możesz także zweryfikować swój dokument pod kątem
Walidator HTML5 (wysoce eksperymentalny)
źródło
Nigdy nie słyszałem o żadnym ograniczeniu długości atrybutów.
W specyfikacjach HTML 4.01 w sekcji Atrybuty nic nie wspomina o żadnych ograniczeniach.
To samo w DTD HTML 4.01 - w rzeczywistości, o ile mi wiadomo, DTD nie pozwala na określenie długości atrybutów.
Jeśli w HTML 4 nie ma nic takiego, nie wyobrażam sobie, aby coś takiego pojawiało się w HTML 5 - i faktycznie nie widzę żadnych ograniczeń długości w sekcji Atrybuty 9.1.2.3 dla HTML 5.
źródło
From http://dev.w3.org/html5/spec/Overview.html#embedding-custom-non-visible-data :
To, co jest używane do analizowania / przetwarzania tych wartości atrybutów data- *, będzie miało ograniczenia.
Okazuje się, że atrybuty danych i wartości są umieszczane w obiekcie DOMStringMap. To nie ma żadnych ograniczeń.
Z http://dev.w3.org/html5/spec/Overview.html#domstringmap :
DOMStringMap to interfejs z getter, setter, greator i deleter. Seter ma dwa parametry typu DOMString, nazwę i wartość. Wartość jest typu DOMString, która jest odwzorowana bezpośrednio na ciąg JavaScript.
Z
http://bytes.com/topic/javascript/answers/92088-max-allowed-length-javascript-string:
[uwaga: chrome zgłasza bytes.com jako źródło złośliwego oprogramowania, więc uwaga]
źródło
SGML Definiuje atrybuty z zestawem limitów wynoszącym 65 000 znaków, widoczne tutaj: http://www.highdots.com/forums/html/length-html-attribute-175546.html
Chociaż to, co robisz, powinno być w porządku. Jeśli chodzi o górne limity, widziałem, że jQuery korzysta z atrybutów danych, które przechowują także kilka tysięcy danych osobiście.
źródło
Testowane niedawno w Edge (wersja 81.0.416.58 (64 bity)), a atrybuty danych wydają się mieć limit 64k.
źródło