(圖片頡取自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的原始碼中,只要將它改成同類寫法,也可以支援多系統啊!
Fernando
2008年9月14日 @ 20時12分
Hi, I’m Fernando from Uruguay, the developer of UserAgent Spy.
I can’t understand a word you wrote in the post, but thanks a lot for mentioning my WordPress plugin. UserAgent Spy detects Google Chrome since Chrome’s launch day.
Regards
aaa
2008年10月6日 @ 21時02分
i would like to try it~ 😀
Jonathan
2009年4月13日 @ 12時05分
….因為他是使用Google Chrome和Windows Vista作業系統,而我的系統卻誤以為他是使用Safari和Mac OS X。 <<<
Jansen, 佢無錯喎 ……. google chrome 係唔係即係 safari 就唔知,但好多人都話 vista 即係 Mac OSX
XD
教你如何善用本網誌 | 影.腦.者
2009年5月20日 @ 01時21分
[…] 你們從哪個瀏覽器、哪個作業系統留言給我,我可是能夠看到的喔!利用Browser Sniff插件就能夠得到這一行文字,不過後來發現它不支援Google Chrome瀏覽器,我就再稍作修改,成為現在的樣式了! […]
無法顯示網頁
2009年6月22日 @ 10時17分
我改了好像還不行呢!
亮
2009年6月22日 @ 13時03分
@無法顯示網頁: 要使用browsersniff,必須手動修改WordPress:
To show commenters web browser description, use the function pri_print_browser(“Using “, “”, true, ‘on’); inside the comment loop.
詳情可看這兒的”usage”一欄。
ps.幾天前改用useragent-spy,還不錯,自行修正之後就很好用了
改用 WP-UserAgent » 投筆從農
2009年7月19日 @ 04時17分
[…] 幸好之前才改過 comment,知道要從 functions.php 下手。而回完信後我想到之前這個有誤判樂咖的 browser 跟 OS 的情形,便查了一下資料。結果這裡有提到原因 […]