一、navigator对象
navigator使用来识别浏览器的,是所有支持javascript的浏览器所共有的。与BOM的其他对象不同,每个浏览器的navigator对象都有一套自己的属性。
常见的属性名称:
appName 完整的浏览器名称
cookieEnabled 表示cookie是否启用
onLine 浏览器是否联网
platform 浏览器所在的系统平台
plugins 浏览器所安装的插件信息的数组
preference() 用户的首选项
userLanguage 浏览器的默认语言
1、检测插件
对于非IE浏览器可以使用plugins数组进行检查,该数组的每一项都包含了一下属性 :
- name 插件名称
- description 插件描述
- filename 插件文件名
- length 插件所处理的MIME类型数量
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; } alert(hasPlugin("Flash"));
通过navigator.plugins数组得到了插件数组,然后在插件数组中查询是否对应的插件名。
对于IE浏览器的插件检测方法:
在IE中检测插件的唯一方式就是试用ActiveXObject类型,并尝试创建特定插件的实例。IE是以COM对象来检测插件的,COM对象是以唯一标识符来确定对象的。
Flash插件的唯一表示符为:ShockwaveFlash.ShockwaveFlash
function hasIEPlugin(name) { try{ new ActiveXObject(name); return true; }catch(ex) { return false; } } alert(hasIEPlugin("ShockwaveFlash.ShockwaveFlash"));
由于两种差别太大,所以通常采用针对特定插件做检测算法
//检测所有浏览器的Flash插件 function hasFlush() { var result=hasPlugin("Flush"); if(!result) { result=hasIEPlugin("ShockwaveFlash.ShockwaveFlash"); } return result; }
首先是对所有浏览器都采用hasPlugin函数检测如果返回true就不用再检测IE因为IE已经用hasPlugin检测过了,否则要专门对IE进行检测。
2、注册处理程序:
navigator.registerContentHandler(mimeType, uri, title);//接收三个参数,要处理的MIME类型,可以处理该MIME类型的页面的URL以及应用程序的名称
navigator.registerProtocolHandler(protocol, url, title);//接收三个参数,协议名称,可以处理相应请求的页面的URL以及应用程序的名称
这两个方法可以让一个站点指明可处理的类型。
二、screen对象
screen对象包含着浏览器窗口外显示器的信息,每个浏览器的screen对象都包含有不同的属性
三、history对象
history对象保存用户上网的历史记录,从浏览器窗口打开的时候算起。history是window的属性,每一个窗口或者框架都有一个history对象。
go();方法,接收一个整数值或者字符串,表示前进或者后退的页数或者前往的页面
history.forward();前进1页
history.back();后退1页