【JS第36期】BOM-navigator对象

Navigator 对象包含有关浏览器的信息。下表列出所有navigator对象的方法及属性。

属性或方法描述IEFirefoxSafari/ChromeOpera
appCodeName返回浏览器的名称。通常都是Mozilla,即使用非Mozilla浏览器也是如此3.0+1.0+1.0+7.0+
appMinorVersion次版本信息4.0+--9.5+
appName完整的浏览器名称3.0+1.0+1.0+7.0+
appVersion浏览器的版本3.0+1.0+1.0+7.0+
buildID浏览器编译版本-2.0+--
cookieEnabled表示cookie是否启用4.0+1.0+1.0+7.0+
cpuClass客户端计算器中使用的cpu类型4.0+---
javaEnabled表示当前浏览器是否启用了java4.0+1.0+1.0+7.0+
language浏览器的主语言-1.0+1.0+7.0+
mimeTypes在浏览器中注册的mime类型数组4.0+1.0+1.0+7.0+
onLine表示浏览器是否连接到因特网4.0+1.0+-9.5+
opsProfile似乎早就不用了。查不到相关文档4.0+---
oscpu客户端计算机操作系统或使用的cpu-1.0+--
platform浏览器所在的系统平台4.0+1.0+1.0+7.0+
plugins浏览器中安装插件信息的数组4.0+1.0+1.0+7.0+
preference()设置用户首选项-1.5+--
product产品名称-1.0+1.0+-
productSub关于产品的次要信息-1.0+1.0+-
registerContentHandler()针对特定的mime类型将一个站点注册未处理程序-2.0+--
registerProtocolHandler()针对特定的协议将一个站点注册为处理程序-2.0+--
securityPolicy已废弃。安全策略的名称-1.0+--
systemLanguage操作系统的语言4.0+---
taintEnabled()已经废弃。表示是否允许变量被修改4.0+1.0+7.0+
userAgent浏览器的用户代理字符串3.0+1.0+1.0+7.0+
userLanguage操作系统默认语言4.0+--7.0
userProfile借以访问用户个人信息的对象4.0+---
vendor浏览器的品牌-1.0+1.0+-
vendorSub有关供应商的次要信息-1.0+1.0+-

检测插件

// 检测插件(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;
}

// 检测 flash
hasPlugin('Flash');
复制代码

在ie中检测插件可以使用专有的ActiveXObject 类型,并创建一个特定的插件实例。ie中是以com对象的方式实现的插件的,而com对象使用唯一标识符来标识。因此,检测插件必须知道其com标识符。如:

// 检测ie中插件
function hasIEPlugin(name) {
  try {
    new ActiveXObject(name);
    return true;
  } catch(e) {
    return false;
  }
}
// 检测flash
hasIEPlugin('ShockwaveFlash.ShockwaveFlash')
复制代码

上例中之所以用try...catch是因为创建未知com对象会导致抛出错误。这样,如果实例化成功返回true,否则抛出错误,返回false。由于两种检测方式差异比较大,所以针对每一个插件分别创建检测函数。如:

// 检测所有浏览器flash

function hasFlash() {
  var result = hasPlugin('Flash');
  if (!result) {
    result = hasIEPlugin('ShockwaveFlash.ShockwaveFlash')
  }
  return result;
}
// 检测flash 
hasFlash() 
复制代码

注册处理程序

registerContentHandler() 有三个参数:要处理的mime类型、可以处理该mime类型的页面的url、应用程序的名字。如:

navigator.registerContentHandler('application/rss+xml', 'http://www.somereader.com?feed=%s', 'Some Reader');
复制代码

registerProtocolHandler()有三个参数:要处理的协议、可以处理该页面的url、应用程序的名字。

navigator.registerProtocolHandler('mailto', 'http://www.somemailclient.com?cmd=%s', 'Some Mail Client')
复制代码

如有侵权,请发邮箱至wk_daxiangmubu@163.com 或留言,本人会在第一时间与您联系,谢谢!!

长按二维码关注我们,了解最新前端资讯

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值