虽然 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 浏览器版本 的例子,对本例 判断结果输出部分 进行适当改进即可。