HTML 속성의 길이에 제한이 있습니까?
-
19-09-2019 - |
문제
HTML의 속성 값에 얼마나 걸리나요?
HTML5 스타일 데이터 속성을 사용하고 있습니다.data-foo="bar"
) 새로운 응용 프로그램에서, 한 곳에서는 공정한 데이터 (100 자 이상)를 저장하는 것이 정말 편리합니다. 이 금액이 괜찮다고 생각하지만 너무 많은 금액에 대한 의문이 제기됩니까?
해결책
HTML 4
HTML 4 관점에서 속성은 SGML 구성입니다. 그들의 한계는 HTML의 SGML 선언 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는 다른 것 같습니다 사양 "이 버전의 HTML은 비 SGML 기준으로 돌아갑니다."
나중에 HTML 5를 구문 분석하는 방법을 설명 할 때 다음 구절이 나타납니다 (중요성 추가) :
아래에 설명 된 알고리즘 제한 없음 생성 된 돔 트리의 깊이에 길이에 태그 이름, 속성 이름, 속성 값, 텍스트 노드 등. 구현자는 임의의 한계를 피하도록 권장되는 반면, 실제적인 문제는 사용자 에이전트가 중첩 깊이 제약을 부과 할 수 있음을 인식하고있다.
그래서 나는 그것이 당신의 대답이라고 생각합니다.
다른 팁
난 그냥 테스트를 작성했습니다 길이가 길어집니다 10000000 속성으로 다시 검색하면 잘 작동합니다 (Firefox 3.5.2 & Internet Explorer 7)
5 천만 건은 브라우저가 "이 스크립트를 완료하는 데 오랜 시간이 걸립니다"메시지와 어울립니다.
나는 한계가 있다고 생각하지 않습니다. 나는 지금 당신이 할 수 있다는 것을 압니다
<a onclick=" //...insert 100KB of javascript code here">
그리고 그것은 잘 작동합니다. 조금 읽을 수는 없지만.
에서 HTML5 구문 DOC
9.1.2.3 속성
요소의 속성은 요소의 시작 태그 내부에 표현됩니다.
속성에는 이름과 값이 있습니다. 속성 이름은 공간 문자 이외의 다른 문자, u+0000 null, u+0022 인용 표시 ( "), u+0027 apostrophe ( '), u+003e 더 큰 부호 (>), u+로 구성되어야합니다. 002f solidus (/) 및 u+003d는 부호 (=) 문자, 제어 문자 및 유니 코드로 정의되지 않은 문자와 동일합니다. 이는 속성 이름에 대한 ASCII CASE Insensitive 일치입니다.
속성 값은 텍스트가 모호한 앰퍼 샌드를 포함 할 수 없다는 추가 제한을 제외하고 텍스트와 문자 참조의 혼합입니다.
속성은 네 가지 방법으로 지정할 수 있습니다.
빈 속성 구문
인용되지 않은 속성 값 구문
단일 크기 속성 값 구문
이중 인용 속성 값 구문
여기서 속성 값의 크기에 대한 제한은 언급되지 않았습니다. 그래서 나는 아무것도 없어야한다고 생각합니다.
당신은 또한 당신의 문서를 확인할 수도 있습니다
나는 속성의 길이에 대한 한계에 대해 들어 본 적이 없다.
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-visible-data:
모든 HTML 요소에는 모든 값으로 지정된 수의 사용자 정의 데이터 속성이있을 수 있습니다.
이 데이터를 구문 분석/처리하는 데 사용되는 것-* 속성 값에는 한계가 있습니다.
데이터-아트 리 부스와 값은 domstringMap 객체에 배치됩니다. 이것은 고유 한 한계가 없습니다.
에서 http://dev.w3.org/html5/spec/overview.html#domstringmap:
참고 : 여기서 DomStringMap 인터페이스 정의는 JavaScript 환경만을위한 것입니다. 다른 언어 바인딩은 해당 언어에 대해 DomstringMap을 구현하는 방법을 정의해야합니다.
DomstringMap은 Getter, Setter, Greator 및 Deleter와의 인터페이스입니다. 세터에는 유형 Domstring의 두 매개 변수, 이름 및 값이 있습니다. 값은 JavaScript 문자열에 직접 매핑되는 Type DomString입니다.
에서 http://bytes.com/topic/javascript/answers/92088-max-allowed-length-javascript-string:
JavaScript 문자열의 최대 길이는 구현 특이 적입니다.
참고 : Chrome은 Bytes.com을 맬웨어의 소스로보고하고 있으므로주의하십시오.
SGML은 여기에서 볼 수있는 65k arecters의 한계 세트로 속성을 정의합니다.http://www.highdots.com/forums/html/length-html-attribute-175546.html
당신이하는 일에 대해서는 괜찮을 것입니다. 상한에 관해서는, jQuery 사용 데이터 속성이 몇 k의 데이터를 개인적으로 보유하는 것을 보았습니다.