맞춤형 HTML 속성을 사용하는 구체적인 위험은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1928369

  •  20-09-2019
  •  | 
  •  

문제

이 주제는 사무실에서 격렬한 토론으로 바뀌 었으므로 당신의 생각을 배우는 데 관심이 있습니다.

우리는 특정 브라우저 만 목표로하는 웹 앱에서 작업하고 있습니다. 이 브라우저에는 현재 다른 풍미 Opera 9 및 Mozilla 1.7.12가 포함됩니다. 앞으로 우리는 Opera 10과 Webkit의 다른 풍미를 지원해야 할 것입니다. 그러나 우리가 IE 버전을 다루어야 할 가능성은 거의 없습니다.

우리의 웹 앱은 doctype에서 HTML 4.0 엄격한 것을 선언합니다.

최근에 저는 HTML에서 사용자 정의 속성을 사용하기위한 특정 문제에 대한 해결책으로 제안했습니다. 나는 다음과 같이 보일 것을 제안했다.

<span translationkey="someKey">...</span>

이것은 유효한 HTML 4가 아니기 때문에 HTML 직원들과 잘 어울리지 않았으며 우리는 논쟁에 빠졌습니다.

내 질문은 이것입니다 : 무엇이 있든, 사용자 정의 속성을 사용하는 위험은 무엇입니까? 페이지가 유효성이 없다는 것을 알고 있지만 모든 브라우저가 모르는 속성을 무시하지 않습니까? 또는 일부 브라우저가 "Qirks Mode"로 변경되고 Page가 엄격한 HTML 4.0이 아닌 것처럼 페이지를 렌더링 할 수 있습니다.?

업데이트:

실제 질문이 제기되었습니다.

도움이 되었습니까?

해결책

브라우저 제한/위험이 없습니다. W3 유효성 검사기 만 짖지 만 짖는 개는 물지 않습니다.

그만큼 W3 사양 다음을 말합니다.

  • 사용자 에이전트가 인식하지 못하는 속성을 만나면 전체 속성 사양 (예 : 속성 및 그 값)을 무시해야합니다.

~ 아니다 일부 사람들이 생각할 수있는대로 Quirks 모드로 렌더링하십시오. 유효하지 않은 속성이 아닌 유효하지 않은/강제 문서에서만 그렇게합니다.

그러나 일부 JavaScript 라이브러리/프레임 워크는 여러 jQuery 플러그인과 같은 DOM 트리의 사용자 정의 HTML 속성을 "보이지 않게"추가/사용합니다. 이렇게하면 "우연의 일치"가 자신의 목적과 동일한 이름을 가진 속성을 사용하기 때문에 속성에서 충돌을 위험에 빠뜨릴 수 있습니다. 슬프게도 이것은 종종 가난하거나 전혀 문서화되지 않습니다.

다른 팁

HTML 5는 'data-'접두사를 사용하여 사용자 정의 속성을 허용합니다. http://ejohn.org/blog/html-5-data-attributes/

유효한 HTML4.0 엄격한 목표를 유지하는 것이 목표 인 경우, 사용자 지정 속성을 사용하려는 이유는 중요하지 않으면 목표를 깨뜨리고 있습니다.

나는 당신이 묻는 질문은 당신이 원하는 기능을 얻기 위해 4.0 엄격한 것을 깨뜨려야하는 이유입니다. 사용자 정의 속성을 사용할 수있는 모든 것은 기존 속성에서 A를 사용할 수 있습니다.

<span translationkey="someKey">...</span>

될 수 있습니다 :

<span class="Translationkey@someKey">...</span>

모든 클래스 정보를 구문 분석하는 데 몇 가지 추가주기가 될 것이지만 해당 클래스에 CSS 정보를 넣지 않는 한 디스플레이를 변경하지 않고 Quirks 모드에 넣지 않으며 얻지 못합니다. 당신은 직장에서 싸우고 있습니다.

아니면 일부 브라우저가 "Qirks Mode"로 변경되어 Page가 엄격한 HTML 4.0이 아닌 것처럼 페이지를 렌더링 할 수 있습니까?

아니요, 나쁜 속성으로 인해 렌더링 모드가 변경되지는 않습니다.

유효성 검사에 신경 쓰지 않으면 원하는 것을 수행하지만 검증은 디버깅을 쫓을 수있는 간단한 실수를 감지하는 데 유용한 도구입니다. 데이터를 JavaScript로 전달하기위한 다른 완벽하게 좋은 대안이 많다는 점을 감안할 때, 나는 포도 검증보다는 그 중 하나를 사용하는 것을 선호합니다.

또한 임의의 속성을 추가하면 글로벌 네임 스페이스에서 효과적으로 재생됩니다. 미래의 브라우저 나 표준이 스크립트를 시작할 새로운 기능에 대해 'TranslationKey'라는 이름을 사용하기로 결정하지 않을 것이라는 보장은 없습니다. 따라서 속성을 추가해야한다면, 모호하고 독특 할 가능성이있는 이름을 주거나 HTML5를 사용하십시오. data- 이미 접두사.

페이지가 HTML 4 Strict로 선언 된 경우 해당 HTML에 사용되지 않은 속성을 추가하지 않아야합니다. 다르게, 브라우저가 어떻게 행동 할 것인지는 확실하지 않습니다.
이미보고 된 바와 같이, 추가 속성을 추가하는 방법은 제한 사항이 있더라도 클래스로 추가하는 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top