<script type="text/javascript">
var Sys = {};
var ua = navigator.userAgent.toLowerCase();
var s;
(s = ua.match(/msie ([/d.]+)/)) ? Sys.ie = s[1] :
(s = ua.match(/firefox//([/d.]+)/)) ? Sys.firefox = s[1] :
(s = ua.match(/chrome//([/d.]+)/)) ? Sys.chrome = s[1] :
(s = ua.match(/opera.([/d.]+)/)) ? Sys.opera = s[1] :
(s = ua.match(/version//([/d.]+).*safari/)) ? Sys.safari = s[1] : 0;
//以下進行測試
if (Sys.ie) document.write('IE: ' + Sys.ie);
if (Sys.firefox) document.write('Firefox: ' + Sys.firefox);
if (Sys.chrome) document.write('Chrome: ' + Sys.chrome);
if (Sys.opera) document.write('Opera: ' + Sys.opera);
if (Sys.safari) document.write('Safari: ' + Sys.safari);
</script>
其中,採用了“... ? ... : ...”這樣的判斷表達式來精簡代碼。判斷條件是一條賦值語句,既完成正則表達式的匹配及結果複製,又直接作爲條件判斷。而隨後的版本信息只需從前面的匹配結果中提取即可,這是非常高效的代碼。
以上的代碼都是爲了打造前端框架所做的預研,並在五大瀏覽器上測試通過。今後,判斷某種瀏覽器只需用if(Sys.ie)或 if(Sys.firefox)等形式,而判斷瀏覽器版本只需用if(Sys.ie == '8.0')或if(Sys.firefox == '3.0')等形式,表達起來還是非常優雅的。