虽然 Navigator 对象提供了 appName 属性以取得浏览器的名称,但很遗憾 Firefox、Chrome 等以 Netscape 代码为基础浏览器提供的浏览器名称都是 Netscape。因此使用 navigator.appName 并不能严格区分各个浏览器。
要严格区分各个浏览器,还是要像上面的例子一样,通过 navigator.userAgent 属性包含的具体信息来判断。
<script type="text/javascript">
var ua = navigator.userAgent.toLowerCase();
var info = {
// IE 浏览器
ie: /msie/.test(ua) && !/opera/.test(ua),
// Opera 浏览器
op: /opera/.test(ua),
// Safari 浏览器
sa: /version.*safari/.test(ua),
// Chrome 浏览器
ch: /chrome/.test(ua),
// Firefox浏览器
ff: /gecko/.test(ua) && !/webkit/.test(ua)
};
// 判断并输出结果
(info.ie) && alert("IE 浏览器");
(info.op) && alert("Opera 浏览器");
(info.sa) && alert("Safari 浏览器");
(info.ff) && alert("Firefox 浏览器");
(info.ch) && alert("Chrome 浏览器");
</script>
本例通过构造对象属性,检测特定字符串来判断具体浏览器。如果需要同时判断浏览器版本,请参考前面 检测 IE 浏览器版本 的例子,对本例 判断结果输出部分 进行适当改进即可。