브라우저가 "쿼크"모드인지 확인하는 방법


128

비교적 엄격한 doctype과 HTML 마크 업을 가진 페이지가 거의 호환되지만 거의 통제 할 수없는 사용자 콘텐츠 때문에 아마도 어리석은 방식으로 누락 될 수 있다고 가정 해 봅시다. 일부 기본 구조를 제어하고 일부 자바 스크립트가 필요한 콘텐츠 관리 시스템의 테마 또는 관리 시스템이지만 페이지에 들어가는 다른 모든 것에 대해서는 책임을지지 않습니다.

브라우저가 더 표준 호환 엔진을 사용하지 않고 "쿼크"모드로 전환하기로 결정한 경우 어떻게 알 수 있습니까?

IE, Chrome, Safari 및 Firefox는 물론 모두 다르게 처리하기 때문에 각 주요 브라우저에 대한 답변을 찾고 있습니다. 하나의 단일 오류로 인해 오류가 발생하거나 약간의 여유가 있습니까?

답변:


159

Firefox 및 Opera 에서는 페이지 정보를 확인하여 브라우저가 "쿼크 모드"인지 확인할 수 있습니다.

를 사용하면 document.compatMode대부분의 브라우저에서 사용중인 모드를 알려줍니다.

에서 크롬, 사파리, 그리고 IE 주소 표시 줄에서이 자바 스크립트를 실행합니다 :

 javascript:window.alert('You are in ' + (document.compatMode==='CSS1Compat'?'Standards':'Quirks') + ' mode.')

( javascript:최근 보안 변경으로 인해 검색 주소창에 붙여 넣은 후 부분 을 다시 입력해야합니다. )


IE에는 오래된 페이지를 "EDGE"모드로 만들 때 또 다른 잠재적 인 가치가 있습니다. 값은 "BackCompat"이었다
그렉 우즈

DOCTYPE을 완전히 잘못된 것으로 설정할 때 Chrome에서도 BackCompat을 얻었습니다. 이 답변의 코드에 따르면 값이 CSS1Compat 이외의 값이면 쿼크 모드입니다. 정말 맞습니까? 가능한 모든 값은 무엇입니까?
still_dreaming_1

명백히 BackCompatible은 "quirks"/ "compatibility"모드의 표준 값입니다. 두 가지 값만 있습니다 : developer.mozilla.org/en-US/docs/Web/API/Document/compatMode
still_dreaming_1

19

JavaScript에서 렌더링 모드를 쿼리 할 수 있으므로 페이지에서 사용중인 렌더링 모드를 알려주 는 Bookmarklet 이있을 수 있습니다.

나는 이 렌더 모드 북마크 를 발견했다 .

javascript:m=(document.compatMode=='CSS1Compat')?'Standards':'Quirks';window.alert('You%20are%20in%20'%20+%20m%20+%20'%20mode.');

11

당신의 실제 특정 질문에 대한 완전한 대답 오류에 전적으로 의존한다는 것입니다. 예를 들어

<!-- Comment -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

실제로 오류가 아니더라도 IE 6 및 7에서 쿼크 모드를 강제 실행합니다 (파일의 첫 줄이 선언이 아닌 경우 총 흔들림을 던집니다). 타입 / 쿼크의 빠른 목록은 여기 에서 찾을 수 있습니다

테스트를 위해 HTML에 다음 줄을 붙여보십시오 (매우 나쁜 자바 스크립트 동작은 여기에 전달됩니다-죄송합니다 ...

<a href="javascript:alert(document.compatMode);">What mode am I?</a>

첫 두 가지 시도 모드가 작동하지 않기 때문에 자바 스크립트 테스터에게 감사드립니다.
누 메논

css1compat! = 쿼크 모드?
Mike Cole


3

IE에게 (doctype을 통해) 엄격해야한다고 말하면 페이지 중간에 마음이 바뀌지 않습니다.


2

쿼크 모드를 올바르게 이해하면 선언 된 doctype에 대해 유효성을 검사하지 않는 페이지는 쿼크 모드를 트리거하기에 충분하지 않습니다. 제대로 표시되지 않습니다.

다른 브라우저가 각 doctype을 처리하는 방법을 결정하기 위해 찾은 최고의 리소스는 here 입니다.


2

웹 개발자 툴바가 추가 된 Firefox의 경우 막대 오른쪽에있는 트리오 아이콘을 볼 수 있습니다. 가장 왼쪽에있는 모드가 무엇인지 알려줍니다.


2

IE에서는 개발자 도구 (F12를 누름)에서 메뉴에 표시됩니다 : 문서 모드 : ... 그리고 다른 모드를 강제로 적용 할 수도 있습니다.


이것은 문제의 요점을 놓친 것입니다. 쿼크 모드의 경우 하나의 경로와 표준 모드의 경우 다른 경로를 실행하는 자바 스크립트를 작성하는 데 도움이되지 않습니다.
Joel Coehoorn

실제로 당신은 자바 스크립트로 그것을하는 방법을 묻지 않고 브라우저가 사용하는 모드를 아는 방법을 묻습니다. 어쨌든 당신이 그것을 의미하지 않더라도 그것을 찾는 사람들에게 도움이 될 수 있습니다. 저는 Firefox에서 그것을 아는 방법을 알아야 하고이 질문에 도달했습니다.
Ronen Festinger

@JoelCoehoorn 실제 문제는 "상대적으로 엄격한 doctype"이 무엇인지 설명하지 않았다는 것입니다!
Mr Lister

0

html5 페이지에서 " <!DOCTYPE html>"를 쓰면 페이지로 시작하여 document.compatMode = 'CSS1Compat'로 변경할 수 있습니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.