navigator 简单介绍
下面是存在于所有浏览器中的属性和方法(注释:没有应用于 navigator 对象的公开标准,不过所有浏览器都支持该对象。):
属性:
appCodeName 返回浏览器的代码名。
appMinorVersion 返回浏览器的次级版本。
appName 返回浏览器的名称。
appVersion 返回浏览器的平台和版本信息。
browserLanguage 返回当前浏览器的语言。
cookieEnabled 返回指明浏览器中是否启用 cookie 的布尔值。
cpuClass 返回浏览器系统的 CPU 等级。
onLine 返回指明系统是否处于脱机模式的布尔值。
platform 返回运行浏览器的操作系统平台。
systemLanguage 返回 OS 使用的默认语言。
userAgent 返回由客户机发送服务器的 user-agent 头部的值。
userLanguage 返回 OS 的自然语言设置。
方法:
javaEnabled() 规定浏览器是否启用 Java。
taintEnabled() 规定浏览器是否启用数据污点 (data tainting)。
如:
console.log(window.navigator);
/*
[Log] Navigator (repetition.html, line 14)
appCodeName: "Mozilla"
appName: "Netscape"
appVersion: "5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/600.8.9 (KHTML, like Gecko) (Coda, like Safari)"
cookieEnabled: true
geolocation: Geolocation
language: "zh-cn"
mimeTypes: MimeTypeArray
onLine: true
platform: "MacIntel"
plugins: PluginArray
product: "Gecko"
productSub: "20030107"
userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/600.8.9 (KHTML, like Gecko) (Coda, like Safari)"
vendor: "Apple Computer, Inc."
vendorSub: ""
__proto__: NavigatorPrototype
*/
具体检测显示网页的浏览器类型将在下一章节讨论。
检测插件
function hasPlugin(name){
name = name.toLowerCase();
for (var i = 0; i < navigator.plugins.length; i ++){
if (navigator.plugins[i].name.toLowerCase().indexOf(name) > -1){
return true;
}
}
return false;
}
上述代码在 IE 中无效。
function hasIEPlugin(name){
try{
new ActiveXObject(name);
return true;
}catch(ex){
return false;
}
}
上述代码用来检测 IE 中的插件,但标识符不同,如 Flash 一般为 ShockwaveFlash.ShockwaveFlash。
通用代码如下(如检测Flash):
function hasPlugin(name){
name = name.toLowerCase();
for (var i = 0; i < navigator.plugins.length; i ++){
if (navigator.plugins[i].name.toLowerCase().indexOf(name) > -1){
return true;
}
}
return false;
}
function hasIEPlugin(name){
try{
new ActiveXObject(name);
return true;
}catch(ex){
return false;
}
}
function hasFlash(){
var result = hasPlugin("Flash");
if (!result){
result = hasIEPlugin("ShockwaveFlash.ShockwaveFlash");
}
return result;
}
console.log(hasFlash()) //true
注册处理程序
Firefox 2 为 navigator 对象新增了 registerContentHandler()
和registerProtocolHandler()
(这两个方法是在 HTML5 中定义的,相关内容以后讨论)
registerContentHandler()
接收三个参数:要处理的 MIME 类型,可以处理该 MIME 类型的页面 URL 以及应用程序的名称。如:
navigator.registerContentHandler("application/rss+xml","http://www.somereader.com?feed=%s","Some Reader");
// 其中的 %s 表示 RSS 源 URL,由系统自动插入。
registerProtocolHandler()
接收三个参数:要处理的协议(mailto 或 ftp),处理该协议的页面的 URL 和应用程序的名称。如:
navigator.registerProtocolHandler("mailto","http://www.somemailclient.com?cmd=&s","Some Mail Client");
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。