以User Agent Sniffing判斷Client端的裝置,再配合載入不同的css檔
前陣子需要開發一個顯示在手機App的網頁功能,因iphone及android手機上用同一個css顯示有點落差,故以User Agent Sniffing判斷後再載入不同的css檔,做法如下:
- 取得User Agent內容文字,轉成小寫方便比對。
var deviceAgent = navigator.userAgent.toLowerCase();
- 以正則表示法判斷關鍵字"iphone"來確認是否為iphone。
if (deviceAgent.match(/iphone/i)) { }
- 確認為iphone後,在頁面載入時,於header額外載入覆蓋用的css檔。
if (document.createStyleSheet) { // createStyleSheet -> IE專用的method document.createStyleSheet('../Styles/mobile_iphone.css); } else { var newSS = document.createElement('link'); newSS.rel = 'stylesheet'; newSS.href = '../Styles/mobile_iphone.css' document.getElementsByTagName("head")[0].appendChild(newSS); }
這樣就完成了,缺點是要維護兩個css檔,但是這樣可以確保畫面不會差太多,而且在Chrome的模擬畫面也是有效的。
如果要判斷其他的裝置可以用其他的關鍵字,可以參考這個連結自行找出要關鍵字判斷。