Safari 3.0.x는 문서가 표준 모드 또는 단점 모드로 렌더링되는지 여부를 확인하기 위해 document.compatMode 속성을 지원하지 않습니다. Safari 3.1 이상에서는이를 지원합니다. document.compatMode를 사용할 수없는 경우 Safari 3.0.x에서 문서 모드를 어떻게 검색합니까? 에서Safari 3.0.x에서 버크 모드를 감지하는 방법은 무엇입니까?
답변
빠른 Google search 결과 : "HOWTO determine the document's compatibility mode"
은 기본적으로 당신은 단지 쿼크 모드에서 작동 할 잘못된 CSS 스타일을 가진 div
를 만들 수 있습니다. 그런 다음 새 div
의 스타일을 확인하여 CSS가 승인되었는지 확인하십시오. 승인 된 경우, 문서는 단점 모드입니다.
var el = document.createElement('div');
el.style.cssText = 'position:absolute;width:0;height:0;width:1';
var compatMode = el.style.width === '1px' ? 'BackCompat' : 'CSS1Compat';
내가 당신을 위해 이것을 테스트 것입니다하지만 난 사파리를 실행할 수 없습니다 :
the code 의역합니다. 가능한 경우 테스트하여 의견에 결과를보고하십시오.
대부분의 최신 브라우저는 compatMode
이지만 일부 구형 브라우저는 그렇지 않습니다. 이러한 브라우저에는 Mac IE와 이전 웹킷 (예 : 데스크톱의 Safari 2 및 많은 Nokia 전화)이 포함됩니다.
document.compatMode
이있는 경우 값이 "BackCompat"
이 아닌지 확인하십시오. 이 경우 문서는 표준 모드입니다. 이것은 IE에 대한 초기 결과를 얻습니다.
그렇지 않으면 document.compatMode
이 없으므로 표준 모드 렌더링을 지원할 수있는 구형 브라우저이지만 compatMode
속성은 없습니다.
width
의 숫자 값을 갖도록 요소를 설정하면 폭이 설정되므로 문서가 표준 모드가 아닙니다.
가독성이 높은 경우 if - else
을 사용할 수 있습니다. 또는, 삼항식 할당을 사용하십시오.
/* 2010-06-26 Garrett Smith - BSD License */ function isQuirksMode(doc) { doc = doc || document; var compatMode = doc.compatMode, testStyle, IS_STANDARDS_MODE = compatMode ? compatMode != "BackCompat" : doc.createElement && ((testStyle = doc.createElement("p").style).width = "1", !testStyle.width); return !IS_STANDARDS_MODE; }
이 주소는 전세계 국가의 Nokias와 같은 모바일 장치에있을 수있는 이전 Webkit 버전을 처리합니다.
IE5.5 이하에서는 true를 반환합니다. 존재 추론 체크 createElement
깨진 createElement있는 브라우저에서 실패합니다 (오페라 5, 나는 믿습니다).
일반적인 추론을 위해이 함수를 사용하지 마십시오. 가능한 한 구체적으로하려고 노력하십시오.
Safari 3.0.x에서 완벽하게 작동합니다. –
좋지 않습니다. 이 코드는 IE가 표준 모드에있을 때 IE에서 "BackCompat"을 발생시킵니다. – Garrett
Google 기사에서는 브라우저 감지 및 확장 기능을 사용합니다. – Garrett