2013-11-22 1 views
0

브라우저 검사가 제거되어 jquery 1.10에서 작동하지 않는 오래된 코드를 업그레이드하려고합니다. 마이그레이션 플러그인을 사용하고 싶지 않습니다.

다음 두 줄을 가장 잘 수행하려면 어떻게해야합니까?

var pos = ($.browser.msie && parseInt($.browser.version) <= 8) ? 'absolute' : 'fixed'; 

if ($.browser.msie && parseInt($.browser.version) <= 6) 
top = top + $(window).scrollTop(); 

나는 IE 7 적은 지원을 중단하지만 그때까지 내가 다시 정상 작동 코드의 두 번째 조각을 만들 수있는 방법을 찾아야 내 이사에서 방향을 얻기 위해 노력하고 있어요.

+2

에서 "나는 마이그레이션 플러그인을 사용하지 않습니다."_ _ 왜? – j08691

+1

기본적으로 브라우저 스니핑에 의존 할 필요가없는 코드를 작성하는 방법을 찾아야합니다. –

+1

offtopic, jqUery는이 모든 "마이그레이션/중지 지원"작업으로 큰 실수를 저질 렀습니다. 1.9와 함께 붙어있는 메신저와 내가 업데이 트를 생각하지 않습니다 .... –

답변

0

다른 게시물에서 @John이 (가) 이것을 찾았습니다. 가능한 해결책입니까?

저자 : @ 존이 post

// ---------------------------------------------------------- 
// A short snippet for detecting versions of IE in JavaScript 
// without resorting to user-agent sniffing 
// ---------------------------------------------------------- 
// If you're not in IE (or IE version is less than 5) then: 
//  ie === undefined 
// If you're in IE (>=5) then you can determine which version: 
//  ie === 7; // IE7 
// Thus, to detect IE: 
//  if (ie) {} 
// And to detect the version: 
//  ie === 6 // IE6 
//  ie > 7 // IE8, IE9 ... 
//  ie < 9 // Anything less than IE9 
// ---------------------------------------------------------- 

// UPDATE: Now using Live NodeList idea from @jdalton 

var ie = (function(){ 

    var undef, 
     v = 3, 
     div = document.createElement('div'), 
     all = div.getElementsByTagName('i'); 

    while (
     div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->', 
     all[0] 
    ); 

    return v > 4 ? v : undef; 

}()); 
+1

사용자 에이전트 스니핑과 마찬가지로 실행 가능합니다. 그것은 최선의 관행이 아니며 제안되었습니다. –

관련 문제