2013-11-22 37 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

這與用戶代理嗅探一樣可行。這不是最佳實踐或建議。 –