Windows XP 패치 SP2로 인해 IE6의 보안이 많이 향상되어 이전에 사용할 수 있었던 많은 기능이 매우 낯설거나 심지어 중단되기도 했습니다. 특히 팝업 창과 모달 창. 그리고 팝업 그러면 사용자가 사용하는 IE6이 일반 IE6(IE6sp1)인지 IE6 xp sp2인지 확인할 수 있나요?
다음은 두 가지 일반적인 IE6 브라우저 UserAgent 필드입니다.
1. 윈도우 XP SP1(NT 5.1)
연결: 연결 유지
수락: */*
인코딩 허용: gzip, deflate
수용 언어: zh-cn
호스트: zhilee.aehk.com
추천인: http://www.cnblogs.com/birdshome/archive/2005/03/11/113723.html
사용자 에이전트: Mozilla/4.0(호환 가능, MSIE 6.0, Windows NT 5.1, SV1, .NET CLR 1.1.4322)
2. 윈도우 2003 SP1(NT 5.2)
연결: 연결 유지
수락: */*
인코딩 허용: gzip, deflate
수용 언어: zh-cn
호스트: zhilee.aehk.com
추천인: http://www.cnblogs.com/bluefee/archive/2005/03/28/127455.html
사용자 에이전트: Mozilla/4.0(호환 가능, MSIE 6.0, Windows NT 5.2, SV1, .NET CLR 1.1.4322)
UA-CPU: x86
이 두 UA 문자열과 일반 UA 문자열의 가장 큰 차이점은 "SV1" 표시가 추가로 있다는 점입니다. SV1의 원래 의미는 "보안 버전 1"이며, IE6 브라우저를 사용하는 사용자가 사용하는 운영 체제가 XPSP2인지 WS03SP1인지를 구체적으로 표시하는 데 사용됩니다.
XPSP2 및 WS03SP1이 IE6에 영향을 미치므로 SVX 주석만 사용하는 대신 IE 버전 번호를 늘리는 것은 어떨까요? IE 개발팀에서는 이 두 운영체제의 패치가 IE6의 설정에 영향을 주기는 하지만 렌더링이나 DHTML, DOM 등 IE6 자체의 기능은 전혀 수정하지 않는다고 설명했습니다. 따라서 이러한 보안 설정 중 일부는 IE 자체의 버전 번호를 업그레이드하는 데 적합하지 않습니다.
후속 IE 버전에서는 SVX 로고가 제거될 수 있으므로 현재는 UA 문자열을 사용하여 운영체제의 SP 버전을 감지하는데 이는 임시적인 방법일 뿐입니다.
var ua = navigator.userAgent;
if ( ua.indexOf("SV1") != -1 )
{
if ( ua.indexOf("NT 5.1") != -1 )
{
//윈도우 XP SP2
}
else if ( ua.indexOf("NT 5.2") != -1 )
{
// 윈도우 2003 sp1
}
그밖에
{
// 잘못된 사용자 에이전트 문자열
}
}