2010-12-01 129 views
4

我想要在操作系統和瀏覽器的主體類。我需要像素完美的樣式,因爲在不同的操作系統/瀏覽器配置中字體的行爲不同。經過一些Google搜索和試驗。我能想到的要做到這一點的唯一方法是使用一個的indexOf ...瀏覽器和操作系統作爲主體類

var OSName="Unknown OS"; 
if (navigator.appVersion.indexOf("Win")!=-1) OSName="Windows"; 
if (navigator.appVersion.indexOf("Mac")!=-1) OSName="MacOS"; 
if (navigator.appVersion.indexOf("X11")!=-1) OSName="UNIX"; 
if (navigator.appVersion.indexOf("Linux")!=-1) OSName="Linux"; 

var agt=navigator.userAgent.toLowerCase(); 
if (agt.indexOf("opera") != -1) return 'Opera'; 
if (agt.indexOf("firefox") != -1) return 'Firefox'; 
if (agt.indexOf("safari") != -1) return 'Safari'; 
if (agt.indexOf("webkit") != -1) return 'Webkit'; 
if (agt.indexOf("msie") != -1) return 'Internet Explorer'; 
if (agt.indexOf("mozilla/5.0") != -1) return 'Mozilla'; 

,我認爲它不是一個非常beautyful解決方案。有沒有一些正則表達式可以做到這一點?或者有沒有更快的方法來做到這一點?

+0

如果你真的想訴諸瀏覽器嗅探,祝你好運 - 這將失敗,因爲渲染還取決於安裝的字體和瀏覽器版本(最顯着的是IE6與IE7對比IE8與即將到來的IE9)。如果你需要一個像素完美的網站,HTML是一個錯誤的工具 - 讓你的網站變成一個巨大的圖像,這是唯一可以肯定的方式(它會有許多其他問題,但它將是像素完美的)。另外,UA欺騙。 – Piskvor 2010-12-01 10:16:57

+0

這個問題對我來說更多的是OS然後是瀏覽器。 MacOS和Windows中的文本呈現非常不同。我總是很驚訝這些字體在窗口中看起來很醜。但至少我可以以不同的方式控制字體間距和字體大小。但它完全有可能做到像素完美,如果設計師是網絡有經驗的 – meo 2010-12-01 10:28:26

回答

6

你可以使用正則表達式,但它不會使它更漂亮。

基本上,掃描瀏覽器/操作系統/版本的用戶代理字符串是永遠不會會變得漂亮。

這裏是一些稍微漂亮的jQuery ...

// Add some classes to body for CSS hooks 

// Get browser 
$.each($.browser, function(i) { 
    $('body').addClass(i); 
    return false; 
}); 


// Get OS 
var os = [ 
    'iphone', 
    'ipad', 
    'windows', 
    'mac', 
    'linux' 
]; 

var match = navigator.appVersion.toLowerCase().match(new RegExp(os.join('|'))); 
if (match) { 
    $('body').addClass(match[0]); 
}; 

這並不完全給你上述同樣的課,但足以區分不同的操作系統和瀏覽器。

例如,你可以在Windows上針對Firefox瀏覽器...

body.windows.mozilla { 
    background: blue; 
} 

See it!

Or use a plugin.

+0

我不需要我只需要瀏覽器的版本和操作系統 – meo 2010-12-01 10:21:32

相關問題