Navigator起源
Navigator:航海家。 从前身航海家浏览器遗传过来的一个对象,包含有关浏览器的信息,通 过该对象识别不同的浏览器。
识别不同的浏览器
navigator.appName
可以返回浏览器名字,用这个信息就可以识别不同的浏览器,进而对不同的浏览器进行网页的优化(…)。
比如使用navigator.appName方法在谷歌浏览器中打开,我们会得到:
这就获取到谷歌浏览器的名字了,不过好像不大对。没关系,我们再试试其他浏览器。
在Edge中打开:
在IE中打开(IE11):
纳尼,竟然也是这样。
不怕,再试试低版本的IE浏览器(IE10):
对了,还有熟悉的火狐浏览器,这种需求,怎么能少的了它。
FireFox中打开:
到这儿,不得不承认,appName没有用
navigator.userAgent
返回由客户机发送服务器的 user-agent 头部的值。
- 当使用谷歌浏览器打开:
Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36
- 使用火狐浏览器打开:
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0
- 使用IE大家族打开
- Edge
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/18.17763
- IE11
Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; rv:11.0) like Gecko
- IE10
Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E)
- IE9
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E)
分析
谷歌浏览器中包含有Chrome字样,火狐浏览器中包含有Firefox字样,IE10及以下,包含有MSIE字样,而IE11没有明确的标识符,令人震惊的是,Edge甚至有Chrome关键字,绝了,不过,Edge关键字被加上了。
真正的区别不同的浏览器
- 思路
使用正则表达式搜索关键字判断谷歌,火狐,Edge,使用特殊方法判断IE。
代码:
var userAgent=navigator.userAgent;
if ("ActiveXObject" in window){
alert("IE");
}
else if (/edge/i.test(userAgent)){
alert("Edge");
}
else if (/firefox/i.test(userAgent)){
alert("火狐");
}
else if (/chrome/i.test(userAgent)){
alert("谷歌");
}
效果图
- 谷歌
- 火狐
- Edge
- IE