Navigator对象
Navigator 对象属性
属性 | 描述 |
---|---|
appCodeName | 返回浏览器的代码名。 |
appMinorVersion | 返回浏览器的次级版本。 |
appName | 返回浏览器的名称。 |
appVersion | 返回浏览器的平台和版本信息。 |
browserLanguage | 返回当前浏览器的语言。 |
cookieEnabled | 返回指明浏览器中是否启用 cookie 的布尔值。 |
cpuClass | 返回浏览器系统的 CPU 等级。 |
onLine | 返回指明系统是否处于脱机模式的布尔值。 |
platform | 返回运行浏览器的操作系统平台。 |
systemLanguage | 返回 OS 使用的默认语言。 |
userAgent | 返回由客户机发送服务器的 user-agent 头部的值。 |
userLanguage | 返回 OS 的自然语言设置。 |
Navigator 对象方法
方法 | 描述 |
---|---|
javaEnabled() | 规定浏览器是否启用 Java。 |
taintEnabled() | 规定浏览器是否启用数据污点 (data tainting)。 |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Navigator对象</title>
<script>
/**
* Navigator
* -代表当前浏览器信息,通过对象可以用来识别不同浏览器
* -由于历史原因,Navigator对象中大部分属性已经不可以帮助我们识别浏览器了
* -一般我们只会使用userAgent(用户代理等价于浏览器)来判断浏览器信息
* userAgent是一个字符串,这个字符串包含用来描述浏览器信息的内容
* 不同的浏览器会有不同的userAgent
* 火狐的userAgent
* Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:82.0) Gecko/20100101 Firefox/82.0
* 浏览器内核版本 win10版本 64位 浏览器版本 css页面渲染引擎Gecko 火狐82.0
* 谷歌中的userAgent
* Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4302.0 Safari/537.36
* ie8的userAgent
* Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; LCTE)
* ie9的userAgent
* Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; LCTE)
* ie10的userAgent
* Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; LCTE)
* ie11的userAgent
* Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; LCTE; rv:11.0) like Gecko
* 在ie11中已经将微软和IE相关的的标识去掉,所以我们基本不能通过userAgent判断浏览器是否是ie11
* 最骚的是它为了不受歧视,在最后加上了like Gecko,那是火狐的渲染引擎
* 为什么前边都要是Mozilla/5.0?
* 互联网早期由于Netscape影响力,导致现在包括ie浏览器都要表明自己身份兼容Mozilla
* 那么如何判断是什么浏览器?
* 在userAgent返回的字符串中有自己浏览器名字,可以用正则表达式匹配
*
*/
console.log(window.navigator.appName);//Netscape 致敬网景公司(除了ie10及以下)
/**
* 如果无法通过userAgent判断我们的浏览器,还可以通过一些浏览器特有的对象,来判断浏览器信息
* 比如:ActiveXObject
* 但是还是被发现了很多浏览器用它判断ie11,
* 于是window.ActiveXObject返回值是false,存在还返回false
* 真的不要脸,啊呸!
*/
var ua = navigator.userAgent;
console.log(ua);
if (/firefox/i.test(ua))
{
alert("我是火狐浏览器");
} else if (/chrome/i.test(ua)){
alert("我是谷歌浏览器");
}else if ("ActiveXObject" in window ){
//ie11还在伪装还是抓不住
//于是我们就用"ActiveXObject" in window 判断
alert("我就是ie浏览器")
}
//于是我们就用"ActiveXObject" in window 判断
</script>
</head>
<body>
</body>
</html>
调侃
没想到大名鼎鼎的ie浏览器竟然如此狼狈,微软虽然竞争赢了网景公司,ie浏览器还是不行啊。居然要伪装成别的浏览器才能获得更好的渲染,识别一个ie浏览器太难了,window.ActiveXObject存在它居然返回false,简直就离谱,为了防止别人发现它ie11。