IT story

HTML 속성의 길이에 제한이 있습니까?

hot-time 2020. 5. 6. 21:03
반응형

HTML 속성의 길이에 제한이 있습니까?


HTML의 속성 값이 너무 오래 걸립니까?

data-foo="bar"새 응용 프로그램에서 HTML5 스타일 데이터 속성 ( )을 사용하고 있으며 한 곳에서는 데이터를 상당히 많이 저장하는 것이 좋습니다 (100 자 이상). 나는이 금액이 괜찮다고 생각하지만 너무 많은 양에 대한 질문을 제기합니까?


HTML 4

HTML 4 관점에서 속성은 SGML 구문입니다. 이들의 한계는 HTML 4SGML 선언에 정의되어 있습니다 .

         수량 SGMLREF
                  ATTCNT 60-증가-
                  ATTSPLEN 65536-가장 큰 값입니다-
                  LITLEN 65536-선언에 허용-
                  NAMELEN 65536-실제 고정 한계를 피하십시오-
                  PILEN 65536-HTML UA 구현-
                  TAGLVL 100
                  태 글런 65536
                  GRPGTCNT 150
                  GRPCNT 64

여기서 문제가되는 값은 "ATTSPLEN"이며 이는 요소의 속성 사양 목록 (해당 요소에 대한 모든 속성의 총 크기 여야 함)에 대한 제한입니다. 그러나 위에서 언급 한 바에 따르면 고정 된 제한은 피해야하므로 대부분의 구현에서 사용 가능한 메모리 이외의 실제 제한은 없을 것입니다.

HTML 5

HTML 5는 다음과 같이 서로 다른 것 같다 사양은 말한다, "비 SGML 기반으로 HTML이 버전은 이렇게 돌아갑니다."

나중에 HTML 5를 구문 분석하는 방법을 설명 할 때 다음과 같은 구절이 나타납니다 ( 강조 추가).

아래에 설명 된 알고리즘은 생성 된 DOM 트리의 깊이 또는 태그 이름, 속성 이름, 속성 값 , 텍스트 노드 등 의 길이에 제한두지 않습니다 . 구현자는 임의의 제한을 피하도록 권장되지만 실제적인 우려는 인정됩니다. 사용자 에이전트가 중첩 깊이 제약 조건을 강요 할 수 있습니다.

그래서 나는 그것이 당신의 대답이라고 생각합니다.


방금 1000 만 길이의 문자열을 속성에 넣은 다음 다시 검색 하는 테스트작성했습니다. (Firefox 3.5.2 및 Internet Explorer 7)

"이 스크립트는 완료하는 데 시간이 오래 걸립니다"라는 메시지와 함께 5 천만 개의 브라우저가 중단됩니다.


나는 정말로 한계가 없다고 생각합니다. 나는 당신이 할 수 있다는 것을 알고 있습니다

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

잘 작동합니다. 조금 읽을 수는 없지만.


에서 HTML5 구문 문서

9.1.2.3 속성

요소의 속성은 요소의 시작 태그 안에 표시됩니다.

속성에는 이름과 값이 있습니다. 속성 이름은 공백 문자 이외의 하나 이상의 문자, U + 0000 NULL, U + 0022 QUOTATION MARK ( "), U + 0027 APOSTROPHE ( '), U + 003E GREATER-THAN SIGN (>), U + 이외의 문자로 구성되어야합니다. 002F SOLIDUS (/) 및 U + 003D EQUALS SIGN (=) 문자, 제어 문자 및 유니 코드로 정의되지 않은 문자 HTML 구문에서 속성 이름은 소문자와 대문자를 혼합하여 쓸 수 있습니다. 속성 이름에 대해 대소 문자를 구분하지 않는 ASCII 일치입니다.

속성 값은 텍스트에 모호한 앰퍼샌드를 포함 할 수 없다는 추가 제한 사항을 제외하고 텍스트와 문자 참조를 혼합 한 것입니다.

속성은 다음 네 가지 방법으로 지정할 수 있습니다.

  1. 빈 속성 구문

  2. 따옴표없는 속성 값 구문

  3. 작은 따옴표로 묶은 속성 값 구문

  4. 큰 따옴표로 묶은 속성 값 구문

여기에서는 속성 값의 크기에 대한 제한을 언급하지 않았습니다. 그래서 나는 아무것도 없어야한다고 생각합니다.

당신은 또한에 대해 문서의 유효성을 검사 할 수 있습니다

HTML5 검사기 (고성능)


나는 속성의 길이에 대한 제한을 들어 본 적이 없다.

HTML 4.01 스펙의 속성 섹션 에는 이에 대한 제한 사항이 없습니다.

Same in the HTML 4.01 DTD -- in fact, as far as I know, DTD don't allow you to specify a length to attributes.

If there is nothing about that in HTML 4, I don't imagine anything like that would appear for HTML 5 -- and I actually don't see any length limitation in the 9.1.2.3 Attributes section for HTML 5 either.


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

Every HTML element may have any number of custom data attributes specified, with any value.

That which is used to parse/process these data-* attribute values will have limitations.

Turns out the data-attributes and values are placed in a DOMStringMap object. This has no inherent limits.

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

Note: The DOMStringMap interface definition here is only intended for JavaScript environments. Other language bindings will need to define how DOMStringMap is to be implemented for those languages

DOMStringMap is an interface with a getter, setter, greator and deleter. The setter has two parameters of type DOMString, name and value. The value is of type DOMString that is is mapped directly to a JavaScript String.

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

The maximum length of a JavaScript String is implementation specific.

[ note: chrome is reporting bytes.com as a source of malware so, beware ]


The SGML Defines attributes with a limit set of 65k charecters, seen here: http://www.highdots.com/forums/html/length-html-attribute-175546.html

Although for what you are doing, you should be fine. As for the upper limits, I have seen jQuery use data attributes hold a few k of data personaly as well.

참고URL : https://stackoverflow.com/questions/1496096/is-there-a-limit-to-the-length-of-html-attributes

반응형