[html] 그렇다면 사용자 정의 HTML 속성이 유효한 XHTML이 아니라면 어떻게 될까요?

나는 그것이 어떤 사람들이 그들을 승인하지 않는 이유라는 것을 알고 있지만, 그것이 정말로 중요합니까? JavaScript와 상호 작용하고 서버에서 정보를 저장하고 보낼 때 제공하는 힘이 유효성 검사 문제를 능가한다고 생각합니다. 내가 뭔가를 놓치고 있습니까? “잘못된”HTML의 결과는 무엇입니까? 그리고 사용자 지정 DTD가이를 해결하지 않습니까?



답변

결과는 w3c가 2 년, 5 년, 10 년 후에 제공되고 동일한 이름의 속성을 생성한다는 것입니다. 이제 페이지가 깨졌습니다.

HTML5는 합법적 인 사용자 지정 속성 (예 : data-myattr = “foo”)에 대한 데이터 속성 유형을 제공하므로 지금부터 사용을 시작하고 향후 이름 충돌로부터 합리적으로 안전 할 수 있습니다.

마지막으로 사용자 정의 논리가 클래스 속성 뒤에있는 합리적이라는 사실을 간과 할 수 있습니다. 일반적으로 스타일 속성으로 간주되지만 실제로는 요소에 사용자 지정 메타 속성을 설정하는 합법적 인 방법입니다. 불행히도 기본적으로 부울 속성으로 제한되어 있기 때문에 HTML5가 데이터 접두사를 추가합니다.

BTW, “기본적으로 부울”은 원칙적으로 의미합니다. 실제로 클래스 이름에 구분 기호를 사용하여 사용자 지정 값과 특성을 정의하는 것을 막을 수는 없습니다.

class="document docId.56 permissions.RW"


답변

예, “데이터”를 사용하여 합법적으로 맞춤 속성을 추가 할 수 있습니다.

예를 들면 :

<div id="testDiv" data-myData="just testing"></div>

그런 다음 최신 버전의 jquery를 사용하여 다음과 같은 작업을 수행하십시오.

alert($('#testDiv').data('myData'))

또는 데이터 속성을 설정하려면 :

$('#testDiv').data('myData', 'new custom data')

그리고 jQuery는 거의 모든 브라우저에서 작동하므로 문제가 없어야합니다.)

최신 정보

  • data-myData는 자바 스크립트 엔진에 관한 한 일부 브라우저에서 data-mydata로 변환 될 수 있습니다. 소문자로 유지하는 것이 가장 좋습니다.


답변

유효성 검사는 그 자체로 끝나는 것이 아니라 실수를 조기에 발견하고 여러 브라우저 유형에서 사용할 때 웹 페이지가 직면 할 수있는 신비한 렌더링 및 동작 문제의 수를 줄이는 데 사용되는 도구입니다.

사용자 지정 속성을 추가해도 지금은 이러한 문제에 영향을주지 않으며 앞으로는 그렇게 할 가능성이 낮지 만 유효성을 검사하지 않기 때문에 페이지 유효성 검사의 출력을 평가하려면 다음을 수행해야합니다. 중요한 유효성 검사 문제와 그렇지 않은 문제 중에서 신중하게 선택하십시오. 페이지를 변경하고 재 검증 할 때마다이 작업을 반복해야합니다. 페이지의 유효성이 완전히 확인되면 멋진 녹색 PASS 메시지가 표시되고 테스트의 다음 단계 또는 수행해야하는 다음 변경으로 이동할 수 있습니다.


답변

나는 사람들이 간단한 사용자 정의 속성을 사용하는 것보다 훨씬 더 나쁘거나 이상한 일을하는 검증에 집착하는 것을 보았습니다.

<base href="http://example.com/" /><!--[if IE]></base><![endif]-->

제 생각에는 사용자 지정 속성은 실제로 중요하지 않습니다. 다른 말처럼, 표준에 향후 추가되는 속성에주의를 기울이는 것이 좋습니다. 하지만 이제 HTML5에 data- * 속성이 있으므로 저장되었습니다.

정말로 중요한 것은 적절하게 중첩 된 태그와 적절하게 인용 된 속성 값이 있다는 것입니다.

사용자 정의 태그 이름 (머리글, 바닥 글 등 HTML5에서 도입 한 이름)도 사용하지만 이러한 이름은 IE에서 문제가 있습니다.

그건 그렇고, 나는 종종 이러한 모든 검증 열광자가 iframe 업로드와 같은 Google의 영리한 트릭 앞에 어떻게 굴복하는지 아이러니하게 발견합니다.


답변

사용자 지정 속성을 사용하는 대신 JSON을 사용하여 HTML 요소를 속성과 연결할 수 있습니다.

var customAttributes = { 'Id1': { 'custAttrib1': '', ... }, ... };

결과에 대해서는 SpliFF의 답변을 참조하십시오 .


답변

클래스 속성에 여러 값을 저장하는 것은 올바른 코드 캡슐화가 아니며 복잡한 해킹 방식 일뿐입니다. 예를 들어 jquery를 사용하는 사용자 지정 광고 회 전자를 사용하십시오. 할 페이지가 훨씬 깨끗합니다.

<div class="left blue imagerotator" AdsImagesDir="images/ads/" startWithImage="0" endWithImage="10" rotatorTimerSeconds="3" />

여기에서 간단한 jquery 코드가 작업을 수행하도록합니다. 이제 모든 개발자 또는 웹 디자이너가 광고 로테이터에서 작업하고 별다른 노력없이 요청을 받으면이 값을 변경할 수 있습니다.

1 년 후 프로젝트로 돌아 오거나 이전 개발자가 분리되어 태평양 어딘가에있는 섬으로 갔던 새로운 프로젝트로 돌아 오는 것은 코드가 다음과 같이 명확하지 않은 암호화 방식으로 작성 될 때 의도를 알아 내려는 지옥이 될 수 있습니다.

<div class="left blue imagerotator dir:images-ads endwith:10 t:3 tf:yes"  />

C # 및 기타 언어로 코드를 작성할 때 모든 사용자 지정 속성을 공백으로 구분 된 문자열로 하나의 속성에 넣는 코드를 작성하지 않고 액세스하거나 쓸 때마다 해당 문자열을 구문 분석해야합니다. 여러분의 코드에서 작업 할 다음 사람에 대해 생각해보십시오.


답변

유효성 검사가있는 것은 오늘은 중요하지 않을 수 있지만 내일 문제가 될지 여부를 알 수 없다는 것입니다 (머피의 법칙에 따라 내일 문제가 될 것입니다).

미래에 대비 한 대안을 선택하는 것이 좋습니다. 존재하지 않는 경우 ( 이 특정 경우에 해당 ) 이동 방법은 미래 증명 대안을 발명하는 것입니다.

사용자 정의 속성을 사용하는 것은 무해 할 수 있지만, 여전히 해를 끼치 지 않을 것이라고 생각하기 때문에 잠재적으로 해로운 솔루션을 선택하는 이유는 무엇입니까? 미래 증명 대안이 너무 비싸거나 다루기 힘들다면 이에 대해 더 논의 할 가치가있을 수 있지만, 확실히 그렇지 않습니다.