다음은 코드를 통해 설명하겠습니다. 자세한 내용은 아래를 참조하세요.
IE 브라우저와 비 IE 브라우저의 차이점은 IE 브라우저는 ActiveXObject를 지원하지만, 비 IE 브라우저는 ActiveXObject를 지원하지 않는다는 것입니다. IE11 브라우저가 등장하기 전에는 IE와 비IE를 이렇게 판단하곤 했습니다
그러나 IE11에서는 위의 판단이 false를 반환합니다. IE11에서 다음 코드를 테스트했습니다.
Microsoft 공식 홈페이지에는 IE11 ActiveXObject의 차이점이 설명되어 있습니다.
IE6 브라우저 판단
IE7부터 IE는 XMLHttpRequest 객체를 지원하지만 IE6은 지원하지 않습니다. 이 기능과 IE를 판단하는 이전 함수 isIe()를 기반으로 IE6을 판단하는 방법을 알고 있습니다. 판정방법은 다음과 같습니다.
IE8부터 문서 모드를 지원하기 때문에 document.documentMode를 지원합니다. IE7은 이를 지원하지 않지만 IE7은 XMLHttpRequest 객체를 지원합니다. 판정방법은 다음과 같습니다.
IE8 브라우저 판단
IE9부터 Microsoft는 서서히 표준에 가까워지고 있습니다. 우리는 IE678을 비표준 브라우저라고 부르며, IE9과 크롬, 파이어폭스 등 다른 브라우저를 표준 브라우저라고 부릅니다. 둘 사이의 차이점 중 하나는 Alert(-[1,]);//IE678에서는 NaN이 인쇄되지만 표준 브라우저에서는 -1
그러면 위의 차이점을 토대로 IE8 브라우저라고 판단할 수 있습니다. 방법은 다음과 같습니다.
function isIe8(){ // alert(!-[1,])//->IE678返回NaN 所以!NaN为true 标准浏览器返回-1 所以!-1为false return isIe() &&!-[1,]&&document.documentMode; }
IE9, IE10, IE11 브라우저 심사
브라우저에서는 IE8부터 JSON 내장 객체를 지원하고, IE10부터는 js의 strict 모드를 지원합니다. IE9에서 Alert(!-[1,])는 false를 반환합니다. IE9는 addEventListener를 지원하지만 IE11 브라우저는 IE에 고유한 원래 이벤트 바인딩 AttachEvent를 지원하지 않습니다. 이러한 차이점을 바탕으로 IE9, IE10 및 IE11 브라우저를 구분할 수 있습니다.
다른 브라우저 판단
//检测函数 var check = function(r) { return r.test(navigator.userAgent.toLowerCase()); }; var statics = { /** * 是否为webkit内核的浏览器 */ isWebkit : function() { return check(/webkit/); }, /** * 是否为火狐浏览器 */ isFirefox : function() { return check(/firefox/); }, /** * 是否为谷歌浏览器 */ isChrome : function() { return !statics.isOpera() && check(/chrome/); }, /** * 是否为Opera浏览器 */ isOpera : function() { return check(/opr/); }, /** * 检测是否为Safari浏览器 */ isSafari : function() { // google chrome浏览器中也包含了safari return !statics.isChrome() && !statics.isOpera() && check(/safari/) } };
위 내용은 이 글의 전체 소개입니다. 모든 분들께 도움이 되었으면 좋겠습니다.