Window对象的navigator属性引用的是包含浏览器厂商和版本信息的Navigator对象。Navigator对象的命名是为了纪念Netscape之后NavigatorBU览器译注2,不过所有其他的浏览器也支持它(IE还支持clientln formation属性,它作为navigator的厂商中立同义
词。遗憾的是,其他浏览器并不支持这一更直观的属性命名)。过去,Navigator对象通常被脚本用来确定它们是在IE中还是在Netscape中运行。这种浏览器嗅探方法有问题,因为它要求随着新浏览器和现有浏览器的新版本的引入而不断地
调整。如今,有一种更好的功能测试方法(参见13.4.3节),只需要测试所需要的功能(即,方法或属性),而不是偎设特定的浏览器版本及其功能。然而,浏览器嗅探有时候仍然有价值。这样的一种情况是,当需要解决存在于某个特定
的浏览器的特定版本中的特殊的bug时。Navigator对象有4个属性用于提供关于运行中的浏览器的版本信息,并且可以使用这些属性进行浏览器嗅探。
appName
Web浏览器的全称。在IE中,这就是“Microsoft Internet Explorer”。在Firefox中,该属性就是“Netscape”。为了兼容现存的浏览器嗅探代码,其他浏览器通常也取值为“Netscape”。
appVersion
此属性通常以数字开始,并跟着包含浏览器厂商和版本信息的详细字符串。字符串前面的数字通常是4.0或5.0,表示它是第4或第5代兼容的浏览器。appVersion字符串没有标准的格式,所以,没有办法直接用它来判断浏览器的类型。
userAgent
浏览器.在它的USER-AGENT HTTP头部中发送的字符串。这个属性通常包含appVersion中的所有信息,并且常常也可能包含其他的细节。和appVersion-样,它也没有标准的格式。由于这个属性包含绝大部分信息,因此浏览器嗅探代码通常用它来嗅探。
platform
在其上运行浏览器的操作系统(并且可能是硬件)的字符串。Navigator属性的复杂性正说明了浏览器嗅探对于处理客户端兼容性问题是没有太大帮助的。在Web的早期,人们写了大量的浏览器特定代码用于测试类似于navigator.appName
的属性。在开发新浏览器的时候,浏览器厂商发现为了让现有网站显示正确,它们需要把appName设置为“Netscape”。类似的做法使得appVersion的起始数字失去了意义,而现在的浏览器嗅探代码必须要依赖于比之前复杂很多的navigator.userAgent字符串。
//属性
var appCodeName= window.navigator.appCodeName;//返回与浏览器相关的内部代码名 都为Mozilla
var appName=navigator.appName;//返回浏览器正式名称 均为Netscape
var appVersion=navigator.appVersion;//返回浏览器版本号
var cookieEnabled=navigator.cookieEnabled;//返回浏览器是否启用cookie,true和false
var geolocation=navigator.geolocation;//返回地理定位信息(h5)
var javaEnabled=navigator.javaEnabled();//检测当前浏览器是否支持 Java,从而知道浏览器是否能显示 Java 小程序(IE,chrome返回true,firefox返回false)
var language=navigator.language;//返回浏览器的首选语言
var mimeTypes= navigator.mimeTypes;//返回浏览器支持的Mime类型
var msManipulationViewsEnabled= navigator.msManipulationViewsEnabled;//仅支持IE,true
var msMaxTouchPoints=navigator.msMaxTouchPoints;//字面意思是最大的触摸点,IE为0,其他不支持
var msPointerEnabled=navigator.msPointerEnabled;//IE为true,其他不支持
var onLine=navigator.onLine;//是否连接互联网,均返回true(未断网)
var platform=navigator.platform;//所在平台,返回win32
var plugins=navigator.plugins;//返回浏览器插件集合
var preference=navigator.preference;//允许一个已标识的脚本获取并设置特定的 Navigator 参数
var product= navigator.product;//浏览器产品名,返回gecko
var systemLanguage=navigator.systemLanguage;//获取系统语言,IE支持,返回zh-cn
var userAgent=navigator.userAgent;//判断浏览器类型
var userLanguage=navigator.userLanguage;//返回操作系统的自然语言设置,IE支持,返回zh-cn
//方法
var msLaunchUri=navigator.msLaunchUri;//回调函数,未研究
var taintEnabled=navigator.taintEnabled;//回调函数
var hasOwnProperty=navigator.hasOwnProperty;//意思是是否支持属性,用法如下
var s=document.hasOwnProperty(
通过navigator.useragent字符串是否包含android或者linux判断机型