返回列表 發帖

一行 JavaScript 偵測出你用的瀏覽器

雖然已經是老生常談了,但是還是要提醒一下看官們,除非是要做一個統計分析的系統,否則盡量避免用 JavaScript 偵測瀏覽器的版本,詳情可參考 ppk 的 Object detection 一文。此外 jQuery 在 v1.3 之後也宣佈將把 $.browser 的功能給廢除,改用特性偵測的方式來取代,由此可知,特性偵測將會是未來要寫相容性語法時的主要方向。

話雖如此,偶爾還是需要去偵測瀏覽器版本,特別是底下這段程式碼不秀一下真是太可惜了,一行程式碼可以偵測出目前主流的幾個瀏覽器版本:
B=(function x(){})[-5]=='x'?'FF3':(function x(){})[-6]=='x'?'FF2':/a/[-1]=='a'?'FF':'\v'=='v'?'IE':/a/.__proto__=='//'?'Saf':/s/.test(/a/.toString)?'Chr':/^function \(/.test([].sort)?'Op':'Unknown'
以上這段是節錄自 Ajaxian 的 IE='\v'=='v' 一文,截至目前為止 IE='\v'=='v' 是能判斷出 IE 的最短程式碼。評論裡面還可以找到一些有趣的簡短程式碼,有興趣的人可以去看看喔~
To infinity and beyond!

看程式內容應該是可以偵測 Safari 和 Opera,我本身都用 Chrome,剛剛用 console 跑也可以正確偵測無誤。
To infinity and beyond!

TOP

你可以在 Chrome 按下 Ctrl-Shift-J 開啟 console,在 console 下輸入第一篇的程式片段後,就可以看到結果囉~
To infinity and beyond!

TOP

我想可能是你執行 document.write 的方式比較有爭議,因為 document.write 會在文件上寫入資訊,但是當你在 body onload 的地方呼叫時,這時可能 Chrome 和 Safari 不知道要寫在哪裡,或者是確實有寫到某個地方,但是不是在你想的地方。
To infinity and beyond!

TOP

返回列表 回復 發帖