在这个例子中,hasIEPlugin()函数接收一个 DOM 标识符参数。为检测插件,这个函数会使用传 入的标识符创建一个新 ActiveXObject 实例。相应代码封装在一个 try/catch 语句中,因此如果创 建的插件不存在则会抛出错误。如果创建成功则返回 true,如果失败则在 catch 块中返回 false。上 面的例子还演示了如何检测 Flash 和 QuickTime 插件。
因为检测插件涉及两种方式,所以一般要针对特定插件写一个函数,而不是使用通常的检测函数。
比如下面的例子:
// 在所有浏览器中检测Flash function hasFlash() {
var result = hasPlugin("Flash");
if (!result){
result = hasIEPlugin("ShockwaveFlash.ShockwaveFlash");
}
return result;
}
// 在所有浏览器中检测QuickTime function hasQuickTime() {
var result = hasPlugin("QuickTime");
if (!result){
result = hasIEPlugin("QuickTime.QuickTime");
}
return result;
}
// 检测Flash alert(hasFlash());
// 检测QuickTime alert(hasQuickTime());
以上代码定义了两个函数 hasFlash()和 hasQuickTime()。每个函数都先尝试使用非 IE 插件检 测方式,如果返回 false(对 IE 可能会),则再使用 IE 插件检测方式。如果 IE 插件检测方式再返回 false, 整个检测方法也返回 false。只要有一种方式返回 true,检测方法就会返回 true。
1. 注册处理程序
现代浏览器支持 navigator 上的(在 HTML5 中定义的)registerProtocolHandler()方法。 这个方法可以把一个网站注册为处理某种特定类型信息应用程序。随着在线 RSS 阅读器和电子邮件客户 端的流行,可以借助这个方法将 Web 应用程序注册为像桌面软件一样的默认应用程序。
要使用 registerProtocolHandler()方法,必须传入 3 个参数:要处理的协议(如"mailto"或 “ftp”)、处理该协议的 URL,以及应用名称。比如,要把一个 Web 应用程序注册为默认邮件客户端, 可以这样做: