《JS高程(3)》BOM-03(navigation)-第8章笔记(08)
来源:互联网 发布:软件生存周期 编辑:程序博客网 时间:2024/06/05 19:32
navigator对象
识别客户端浏览器的事实标准,是所有支持JavaScript的浏览器所共有的。
检测插件
检测浏览器中是否安装了特定的插件。
方法:plugins[i];
每个数组中的包含的属性
Firefox ,Safari,Opera和Chrome使用:
function hasPlugin(name){ //转换为小写 name = name.toLowerCase(); for(var i = 0; i<navigator.plugins.length; i++){ // 迭代plugins数组,通过indexof()检测每个name属性 if(navigator.plugins[i].name.toLowerCase().indexOf(name)>-1){ return true; } } return false;}//检测Flashalert(hasPlugin("Flash"));// true//检测QuickTimealert(hasPlugin("QuickTime"));//false
IE中使用:
function hasIEPlugin(name){ // 在try-catch中实例化,因创建未知COM对象会抛出错误。 try{ new ActiveXObject(name); return true; } catch (ex){ return false; }}//检测Flashalert(hasPlugin("ShockwaveFlash.ShockwaveFlash"));// true//检测QuickTimealert(hasPlugin("QuickTime.QuickTime"));//false
在IE中检测插件的唯一方式就是使用专有的ActiveXObject类型,并创建特定插件的实例。以COM对象的方式实现插件,而COM对象使用唯一标识符来标识。因此要检查特定的插件,就必须知道其COM标识符。Flash的标识符是ShockwaveFlash.ShockwaveFlash。
两种方法合并使用,使用判断所有类型的浏览器是否安装了特定插件:
// 检测所有浏览器中的Flashfunction hasFlash() var result = hasPlugin("Flash"); //先判断在非IE浏览器,返回false的话再使用IE插件检测方法,若继续返回false,则不存在。 if(!result){ result = hasIEPlugin("ShockwaveFlash.ShockwaveFlash"); } return result;}// 检测所有浏览器中的QuickTimefunction hasQuickTime(){ var result = hasPlugin("QuickTime"); if(!result){ result = hasIEPlugin("QuickTime.QuickTime"); } return result;}//检测Flashalert(hasFlash);// true//检测QuickTimealert(hasQuickTime);//false
注册处理程序
注册处理程序就为像使用桌面应用程序一样默认使用这些在线应用程序提供了一种方式。
指明一个站点可以处理特定类型的信息:
registerContentHandler()方法:接受3个参数:要处理的MIME类型,可以处理该MIME类型的页面的URL以及应用程序的名称。
讲一个站点注册为处理RSS(简单信息聚合,个人认为是根据个人要求定制的信息整合推送服务)源的处理程序:
navigator.registerContentHandler( //RSS源的MIME类型 "application/rss+xml", //接收RSS源URL的URL。%s表示RSS源URL,下一次请求RSS源时,浏览器就会打开指定的URL而相应的Web应用程序将以适当方式来处理该请求。 "http://www.somereader.com?feed=%s", //应用程序的名称。 "Some Reader");
registerProtocolHandler()方法:接受3个参数:要处理的协议,处理该协议的页面的URL以及应用程序的名称。
navigator.registerProtocolHandler( "mailto", "http://www.somemailclient.com?cmd=%s", "Some Mail Client");
注册了一个mailto协议的处理程序,改程序指向一个基于Web的电子邮件客户端。第二个参数仍然是处理相应请求的URL,而%s则表示原始的请求。
1 0
- 《JS高程(3)》BOM-03(navigation)-第8章笔记(08)
- 《JS高程(3)》BOM-01(window&窗口)-第8章笔记(06)
- 《JS高程(3)》BOM-02(location)-第8章笔记(07)
- 《JS高程(3)》BOM-04(screen)-第8章笔记(09)
- 《JS高程(3)》-第6章笔记(03)
- 《JS高程(3)》-第6章笔记(01)
- 《JS高程(3)》-第6章笔记(02)
- 《JS高程(3)》原型链继承模式 -第6章笔记(04)
- 《JS高程(3)》客户端检测-第9章笔记(10)
- 《JS高程(3)》DOM节点层次Node类型-第10章笔记(11)
- 《JS高程(3)》DOM节点层次Document类型-第10章笔记(12)
- 《JS高程(3)》DOM节点层次Element类型-第10章笔记(13)
- 《JS高程(3)》DOM节点层次Text类型-第10章笔记(14)
- 《JS高程(3)》DOM节点层次Comment类型-第10章笔记(15)
- 《JS高程(3)》DOM节点层次CDATASection类型-第10章笔记(15)
- 《JS高程(3)》DOM节点层次DocumentType类型-第10章笔记(16)
- 《JS高程(3)》DOM操作技术-第10章笔记(17)
- 《JS高程(3)》DOM扩展-API选择符-第11章笔记(18)
- 读<<JAVA设计模式之道>>笔记
- 系统内核开发:实现命令控制台
- 003 - MINA 之工具封装
- 值得你关注的Android6.0上的重要变化(二)
- 初学者搭建SSH框架(MyEclipse 2010版)
- 《JS高程(3)》BOM-03(navigation)-第8章笔记(08)
- NIO - 内存映射文件
- pentaho7.0安装配置 (六)
- IOS开发字体大小与UI给的px对应关系
- Android EventBus的简单使用
- 使用mina保持android端和服务端的长连接
- IDA调试Android
- setsockopt()
- .Net Winform开发笔记