龙空技术网

JavaScript中的navigator对象

木森林林学苑 101

前言:

今天小伙伴们对“javascript 浏览器对象”大致比较讲究,大家都需要知道一些“javascript 浏览器对象”的相关资讯。那么小编也在网络上汇集了一些对于“javascript 浏览器对象””的相关文章,希望你们能喜欢,朋友们一起来了解一下吧!

navigator对象及其属性

最早由Netscape Navigator2.0引入的navigator对象,现在已经成为识别客户端浏览器的事实标准。虽然其他浏览器也通过其他方式提供了相同或相似的信息,但navigator对象却是所有支持JavaScript的浏览器共有的。与其他BOM对象的情况不一样,每个浏览器中的navigator对象也都有一套自己的属性。下面列出了IE、Firefox、Safari、Chrome和Opera等浏览器均支持的属性和方法。如下:

appCodeName:浏览器的名称。通常都是Mozilla,即使是在非Mozilla浏览器中也是如此。appName:完整的浏览器名称。appVersion:浏览器的版本。一般不与实际的浏览器版本对应。cookieEnabled:表示cookie是否启用。javaEnabled():表示当前浏览器中是否启用了Java。mimeTypes:在浏览器中注册的MIME类型数组。platform:浏览器所在的系统平台。plugins:浏览器中安装的插件信息的数组。userAgent:浏览器的用户代理字符串。

上述navigator对象的属性通常用于检测显示网页的浏览器类型。

检测浏览器插件

检测浏览器中是否安装了特定的插件是一种最常见的检测例程。对于非IE浏览器,可以使用plugins数组来达到这个目的。该数组中的每一项都包含下列属性。如下:

name:插件的名称。description:插件的描述。filename:插件的文件名。length:插件所处理的MIME类型数量。

一般来说,name属性中会包含检测插件必需的所有信息,但有时候也不完全如此。在检测插件时,需要像下面这样循环迭代每个插件并将插件的name与给定的名字进行比较。如下:

// 检测插件(在IE中无效)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;}// 检测Flashconsole.log(hasPlugin("Flash"));// 检测QuickTimeconsole.log(hasPlugin("QuickTime"));

检查IE中的插件比较麻烦,因为IE不支持Netscape式的插件。在IE中检测插件的唯一方式就是使用专有的ActiveXObject类型,并尝试创建一个特定插件的实例。IE是以COM对象的方式实现插件的,而COM对象使用唯一标识符来标识。因此,要想检查特定的插件,就必须知道其COM标识符。例如,Flash的COM标识符时ShockwaveFlash.ShockwaveFlash。知道唯一标识符之后,就可以编写类似下面的函数来检测IE中是否安装了相应插件。

// 检测IE中的插件function hasIEPlugin(name){	try {		new ActiveXObject(name);		return true;	} catch(e) {		return false;	}}// 检测Flashconsole.log(hasIEPlugin("ShockwaveFlash.ShockwaveFlash"));// 检测QuickTimeconsole.log(hasIEPlugin("QuickTime.QuickTime"));

鉴于检测这两种插件的方法差别太大,因此典型的做法是针对每个插件分别创建检测函数,而不是使用前面介绍的通用检测方法。如下:

// 检测所有浏览器中的Flashfunction hasFlash(){	var result = hasPlugin("Flash");	if (!result) {		result = hasIEPlugin("ShockwaveFlash.ShockwaveFlash");	}	return result;}// 检测所有浏览器中的QuickTimefunction hasQuickTime(){	var result = hasPlugin("QuickTime");	if (!result) {		result = hasIEPlugin("QuickTime.QuickTime");	}	return result;}

plugins的refresh()方法

plugins集合有一个名叫refresh()的方法,用于刷新plugins以反映最新安装的插件。这个方法接收一个参数:表示是否应该重新加载页面的一个布尔值。如果将这个值设置为true,则会重新加载包含插件的所有页面;否则,只更新plugins集合,不重新加载页面。

注册处理程序

Firefox2为navigator对象新增了registerContentHandler()和registerProtocolHandler()方法,这两个方法是在HTML5中定义的,可以让一个站点指明它可以处理特定类型的信息。随着RSS阅读器和在线电子邮件程序的兴起,注册处理程序就为像使用桌面应用程序一样默认使用这些在线应用程序提供了一种方法。

registerContentHandler()方法接收三个参数:要处理的MIME类型、可以处理该MIME类型的页面的URL以及应用程序的名称。举个例子,要将一个站点注册为处理RSS源的处理程序,可以使用如下代码:

navigator.registerContentHandler("application/rss+xml", "", "some Reader");

registerProtocolHandler()方法也接收三个参数:要处理的协议(如,maito或ftp)、处理该协议的页面的URL和应用程序的名称。例如,要想建一个应用程序注册为默认的邮件客户端,可使用如下代码:

navigator.registerProtocolHandler("mailto", "", "Some Mail Client");

标签: #javascript 浏览器对象 #js中navigator #js中navigator怎么用 #js中navigator对象