(圖片頡取自Jansen

有看過過我blog留言的朋友,大概會察覺到那裡除了顯示頭像,還會能夠偵測出你正在使用的瀏覽器和作業系統版本。這次我不說頭像,先說那個偵測系統。

今早收到Jansen的tweet,提醒我的blog在瀏覽器和作業系統檢測都出錯了,因為他是使用Google Chrome和Windows Vista作業系統,而我的系統卻誤以為他是使用Safari和Mac OS X。

事實上,WordPress的留言系統除了用戶能夠自行輸入的名稱、電郵地址、網址、內文,還會有時間、IP地址和瀏覽器User-Agent資訊。單憑看User-Agent,我們就能夠得知你正在使用的是甚麼系統。這些資訊其實我們在瀏覽網頁時一直都會被網站伺服器紀錄下來,並不是WordPress獨有的功能。用家看到這些訊息,除了在討論網站兼容性和一些開發文章,也實在沒有甚麼得著和損失。而我就是透過WordPress的插件Browser Sniff,將這些宣告形象化顯示出來。

為甚麼會錯被辨認成Safari和Mac OS X?其實不難解釋。Google Chrome就是和使用與Safari相同的WebKit核心,而早期的Safari就是純Mac OS X作業系統的專屬軟件。Browser Sniff已經久未更新啊,查看原始碼,原來程式碼寫著Safari一定是使用Mac OS X,難怪Jansen的留言會出現這樣的結果了。

這是現時Google Chrome的User-Agent:

Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.A.B.C Safari/525.13

作為一個WordPress系統的用家,當然就要好好的利用WordPress能夠修改原始碼的便利吧!於是我在網上搜尋了一下有關Google Chrome的User-Agent資訊,和有關Browser Sniff的修改方法。很意外地,從Browser Sniff的開發blog中可以看到有用戶在為令Google Chrome可以辨識而致謝,可是我完全看不到相關的段落!用Google Search也沒有甚麼更好的成果,只好參考唯一一篇教學文章,雖然是印尼文…

簡單來說,只要將以下的原始碼放進去適當的位置中,就可以了(我講解得超含糊啊):

} elseif (preg_match(‘#Chrome/([a-zA-Z0-9.]+)#i’, $ua, $matches)) {
$browser_name = ‘Google Chrome’;
$browser_code = ‘chrome’;
$browser_ver = $matches[1];
if (preg_match(‘/Windows/i’, $ua)) {
list($os_name, $os_code, $os_ver) = pri_windows_detect_os($ua);
} else {
list($os_name, $os_code, $os_ver) = pri_unix_detect_os($ua);
}

最後,抓來一個Google Chrome的PNG圖示,放在指定的路徑上,大工告成!

你懂得用這個的話,你就會知道那條路徑是甚麼了 🙂

其實在找的同時,也看到一個已經支援Chome的插件UserAgent-Spy,不過我的偏執作怪,因為不喜歡它提供的圖示所以沒有轉用,但如果真的再沒有官方更新的話,我才考慮轉。(其實安裝一次這東西也蠻煩的,在此不說了,有人喜歡聽的話,我才講吧)

順帶一提,在解析Safari的User-Anget的原始碼中,只要將它改成同類寫法,也可以支援多系統啊!