DocType의 선택이 JavaScript 코드에서 볼 수 있듯이 DOM에 영향을 미칩니 까?

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

  •  05-07-2019
  •  | 
  •  

문제

ASP.NET, JavaScript, CSS 등, 기술을 활용하는 대규모 레거시 프로젝트를 감안할 때 HTML 4.0에서 XHTML 1.0 Transitional (또는 다른 방법)으로 웹 페이지의 문서를 변경하는지 궁금했습니다. 웹 페이지의 JavaScript 기능을 깨뜨릴 수 있습니다.

다른 DocTypes가 페이지의 (CSS) 렌더링에 어떤 영향을 미치는지에 대한 많은 기사와 토론이 있지만 코드를 깨는 주제에서 비슷한 것을 찾을 수는 없습니다.

기존 코드에서 잠재적 인 문제를 더 잘 발견하고 새 코드를 작성할 때 문제를 일으키지 않도록 일반적으로 조심해야 할 사항에 대한 기사에 대한 링크를 찾고 있습니다.

도움이 되었습니까?

해결책

DocType을 변경하는지 JavaScript 기능을 중단하는지 여부는 실제로 해당 기능이 어떻게 방어 적으로 설계되었는지에 달려 있습니다. :)

예를 들어, 문서가 렌더링 된 경우 퀴크스 모드, document.body (Body)는 소위 "루트 요소"가됩니다. 표준 모드로 렌더링되면 그 루트 요소는 일반적으로 document.documentElement (HTML). 이것은 다소 실질적인 차이입니다. 브라우저 화면 크기를 결정하는 스크립트가 항상 쿼리하는 경우 clientWidth/clientHeight 속성 document.documentElement, 그것은 분명히 quirks 모드에서 잘못된 결과를보고 할 것입니다 (이후, IIRC, document.documentElement.clientWidth/clientHeight 화면이 아닌 HTML 요소의 치수를 나타냅니다).

대부분의 JS 라이브러리는 일반적으로 QuirksMode가 지원되는지 여부를 명시 적으로 명시합니다 (우리 - 프로토 타입 - 예를 들어, Quirks 모드를 지원하지 않음).

말하기 HTML vs XHTML, 브라우저가 XHTML로 문서를 렌더링하려면 먼저 적절한 "Content-Type"헤더 (예 : 응용 프로그램/XHTML+XML)와 함께 제공해야합니다. DocType 만 XHTML로만 변경하지만 여전히 "Text/HTML"으로 문서를 제공하는 경우, 내가 아는 대부분의 브라우저 여전히 HTML 문서로 구문 분석하고 렌더링합니다..

현재까지, 즉, "실제"XHTML 컨텐츠를 이해하지 못하므로 문서를 텍스트/html (html4.01 doctype 포함)로 제공하는 것이 권장되는 방법입니다 (즉, 즉, 지원되는 브라우저가 아닌 경우가 아니라면). .

"실제"XHTML 문서의 DOM 특성에 관한 한, 나는 어떤 것들이 document.write "작동하지 마십시오"그리고 노드 속성에 액세스하는 것은 항상 getAttribute/setAttribute (더 간단한 속성 액세서보다는). IIRC, 몇 가지 문제가 있습니다 innerHTML.

"실제"XHTML 문서에서 DOM에 대한 정보 부족은 아마도 일반 웹에 대한 문서/응용 프로그램의 실용성 때문일 것입니다 (즉, IE의 지원 부족).

다른 팁

DTD를 사용하는 경우 :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

그러면 사이트는 최신 브라우저에서 IE 및 거의 표준 모드로 Quirks 모드에 있으며, XHTML 1.0 전환 DTD는 페이지가 표준 모드에 있어야하기 때문에 JavaScript (특히 IE)에서 레이아웃 문제와 잠재적 문제가있을 것입니다. Quirks 대 표준에서 DOM이 어떻게 렌더링되는지 사이에는 몇 가지 중요한 차이가 있습니다.

그러나 HTML 4.01 DTD에 시스템 식별자가 포함 된 경우

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">

이미 표준 모드에 있어야합니다. 사이트에서 'docum

XHTML 1.0 Transitional과 함께 컨텐츠 유형의 텍스트/HTML을 제공 할 것이라고 가정합니다.

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