Programing

빈 HTML5 데이터 속성이 유효합니까?

crosscheck 2020. 8. 6. 07:55
반응형

빈 HTML5 데이터 속성이 유효합니까?


지정된 요소 아래에 인라인 모달을 표시하는 간단한 jQuery 플러그인을 작성하고 싶습니다. 내 생각은 요소에 지정된 데이터 속성을 기반으로 스크립트를 자동 초기화하는 것입니다.

매우 기본적인 예 :

<p data-modal-target>Hover over me for an inline modal!</p>
<div data-modal-content data-modal-align="right" data-modal-trigger="hover" data-modal-offset="10px"><!-- any desired syntax can go here --></div>

data-modal-target위의 예제에서 유효한지 궁금 합니다 data-modal-target="true". IE9 등보다 긁는 것은 신경 쓰지 않습니다. 유일한 요구 사항은 유효한 HTML5라는 것입니다.


예, 완벽하게 유효합니다. 귀하의 경우 data-modal-target부울 속성을 나타냅니다.

부울 속성

요소에 부울 속성이 있으면 true 값을 나타내고 속성이 없으면 false 값을 나타냅니다.


사용자 지정 데이터 특성 사양 에는 빈 특성 처리에 대한 변경 내용이 언급되지 않으므로 빈 특성 에 대한 일반적인 규칙이 여기에 적용됩니다.

값없이 속성 이름 만 제공하여 특정 속성을 지정할 수 있습니다.

다음 예제에서 disabled속성은 빈 속성 구문으로 제공됩니다.

<input disabled>

빈 속성 구문은 다음 예제와 같이 빈 문자열을 속성 값으로 지정하는 것과 정확히 같습니다.

<input disabled="">

따라서 빈 사용자 정의 데이터 속성을 사용할 수 있지만이를 부울로 사용하려면 특별한 처리가 필요합니다.

다음을 통해 속성에 액세스하는 경우 element.dataset:

  • 빈 속성이 있으면 값은 ""입니다.
  • 속성이 없으면을 얻습니다 undefined.

따라서 if (element.dataset.myattr)항상 로 유지 되므로 확인할 수 없습니다 false.

부울 속성을로 확인하고 확인할 수 있습니다 if (element.dataset.myattr !== undefined).


로이드의 답변이 잘못되었습니다. 그는 부울 속성 microsyntax에 대한 링크를 언급했지만 data-*속성에서 속성이 부울로 지정되지 않았습니다.


예, 사용자 정의 데이터 속성의 값을 생략하는 것은 유효한 구문입니다.

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

빈 속성 구문 속성 이름 만 있습니다. 값은 암시 적으로 빈 문자열입니다. [...] " https://developers.whatwg.org/syntax.html#attributes-0


한편으로, 유효성 검사기 16.5.7 https://validator.w3.org/nu/#textarea를 전달합니다 .

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8"/>
  <title>a</title>
</head>
<body data-asdf>
</body>
</html>

다른 한편으로, HTML5는 data-속성 의 스펙에서 부울 이라고 말하지 않습니다 : https://www.w3.org/TR/html5/dom.html#custom-data-attribute 반면 다른 부울에 대해서는 매우 명확합니다. https://www.w3.org/TR/html5/forms.html#attr-input-checked 와 같은 속성checked

참고 URL : https://stackoverflow.com/questions/9729080/are-empty-html5-data-attributes-valid

반응형