Javascript高级编程学习笔记(30)—— BOM(4)navigator对象
window对象作为浏览器的全局对象、location对象保存了页面的url信息
那么navigator对象又有什么作用呢?
navigator对象
该对象最早由 Netspace Navigator 2.0 引入,用于识别浏览器客户端的事实标准
在IE中以window.clientInformation、Opera中的window.opera提供了与navigator类似的信息
但是navigator对象在所有支持JS的浏览器中都有实现,只是对某些属性,各个浏览器的实现并不一致
下面例举的属性是主流浏览器都支持的
1、appCodeName 浏览器名称,通常为 mozilla 即使在非Mozilla中的浏览器也是如此(这是因为早期浏览器竞争,浏览器所做的伪装,所以一般不使用该属性判断浏览器)
2、appName 完整浏览器名称
3、appVersion 浏览器版本
4、cookieEnabled 表示cookie是否启用
5、javaEnabled() 表示浏览器是否启用java
6、mimeTypes 表示浏览器中注册的mimeType的类型数组
7、platform 浏览器所在平台
8、plugins 浏览器安装插件的数组
9、userAgent 浏览器用户代理字符串
一般来说最常用的应该是浏览器用户代理字符串,做浏览器检测一般也是利用该属性
下面以谷歌浏览器的该对象举例


上图中黄色标出的就是主流浏览器都有的属性
检测插件
有些时候我们可能需要检测浏览器是否安装了某个插件,来进行一些对应的操作
下面例举两个检测插件的函数(出自JS高编,由于书籍版本的原因,有些方法仅供参考)
// 非IE浏览器
function hasPlugin(name){
name = name.toLowerCase;
for(var i = 0; i < navigator.plugins.legnth; i++){
if(navigator.plugins[i].name.toLowerCase().indexOf(name) > -1){
return true;
}
}
return false;
}
// IE浏览器
function hasIEPlugins(name){
try {
new ActiveXObject(name);
return true;
} catch(ex){
return false;
}
}
需要注意的地方在于IE中的name,需使用其COM标识符
而后面检测IE插件使用try-catch的原因在于,在JS中创建未知的COM对象会抛出错误
所以需要将其放入错误处理语句中使用
注册处理程序
HTML5中定义了两个注册处理程序的函数
1、registerContentHandler()
2、registerProtocolHander()
注册处理程序的函数的作用主要在于,为浏览器指定某类型文件的默认处理方式(web应用)
1、registerContentHander 该方法接收三个参数
- RSS源的MIME类型
- RSS源URL的URL
- 应用程序的名称
如:navigator.registerContentHandler("application/rss+xml","http://www.somreader.com?feed=%s","Some Reader")
2、registerProtocolHander 该方法同样接收三个参数
- 要处理的协议
- 处理该协议页面的url
- 应用程序名称
如:navigator.registerProtocolHander("mailto","http://www.somemailClient.com?cmd=%s","some mail client");
将一个应用程序注册为默认的邮件客户端
Javascript高级编程学习笔记(30)—— BOM(4)navigator对象的更多相关文章
- Javascript高级编程学习笔记(31)—— BOM(5)screen、history对象
screen对象 screen对象应该是BOM对象中最不常用的对象了 其主要用于提供客户端的显示能力信息 包括浏览器外部显示的信息,和像素的宽高等 这个对象的主要用于检测客户端能力,一般不会影响功能 ...
- Javascript高级编程学习笔记(27)—— BOM(1)window对象1
ECMAScript是JS的核心 但是对于在浏览器中运行的JS,BOM显然才是真正的核心 我们知道JS是由三个部分组成的 BOM.DOM.ECMAScript 之前的文章我们主要介绍的是ECMAScr ...
- Javascript高级编程学习笔记(29)—— BOM(3)location对象
在JS中location是一个神奇的对象 它既是window对象的属性,也是document对象的属性 它的作用主要在于保存当前文档页面的信息,以及将 url 解析为独立的片段 location对象属 ...
- Javascript高级编程学习笔记(28)—— BOM(2)window对象2
今天讲一下window对象和浏览器导航,弹窗等有关的内容 导航和打开窗口 window.open() 用于导航到某个特定 url 该方法接收四个参数 1.url 2.窗口目标(当页面中有多个框架fra ...
- Javascript高级编程学习笔记(1)—— JS简介
此系列文章,用于记录所学,如有错误欢迎指出. Javascript组成 1.核心(ECMAScript) 2.文档对象模型(DOM) 3.浏览器对象模型(BOM) 1.核心(ECMAScript) E ...
- Javascript高级编程学习笔记(35)—— DOM(1)节点
DOM JS由三部分组成 1.BOM 2.DOM 3.ECMAScript ES和BOM在前面的文章已经介绍过了 今天开始JS组成的最后一部分DOM(文档对象模型) 我们知道,JS中的这三个部分实际上 ...
- Javascript高级编程学习笔记(3)—— JS中的数据类型(1)
前一段时间由于事情比较多,所以笔记耽搁了一段时间,从这一篇开始我会尽快写完这个系列. 文章中有什么不足之处,还望各位大佬指出. JS中的数据类型 上一篇中我写了有关JS引入的Script标签相关的东西 ...
- JavaScript高级编程学习笔记(第三章之一)
继续记笔记,JavaScript越来越有意思了. 继续... 第三章:JavaScript基础 ECMAScript语法在很大程度上借鉴了C和其它类似于C的语言,比如Java和Perl. 大小写敏感: ...
- Javascript高级编程学习笔记(98)—— WebGL(4) WebGL上下文(2)
错误 Javascript与WebGL之间的一个最大区别在于,WebGL的操作一般不会抛出错误 如果希望获取WebGL的错误信息,那么就需要手动调用 gl.getError() 方法 该方法会返回以 ...
随机推荐
- SQL Server 异常解决:语句被终止。完成执行语句前已用完最大递归 100。
问题出现业务场景: 我司有个缺料分析报表,有一个字段是适用机种,需要通过BOM递归读取顶层父物料.这个错就是缺料分析报表执行时报的错: 原因分析定位: 通过网上一些资料,猜测应该是某个递归查询语句,遇 ...
- linux一台服务器配置多个Tomcat
前提:linux服务器上已经运行多个Tomcat,再去搭建一个Tomcat服务 1.官网下载Tomcat 2.上传到服务器指定一个目录/usr/local/tomcat 3.然后解压tar包,tar ...
- 7F - 无限的路
甜甜从小就喜欢画图画,最近他买了一支智能画笔,由于刚刚接触,所以甜甜只会用它来画直线,于是他就在平面直角坐标系中画出如下的图形: 甜甜的好朋友蜜蜜发现上面的图还是有点规则的,于是他问甜甜:在你画的图中 ...
- leetcode4:两个排序数组的中位数
给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 . 请找出这两个有序数组的中位数.要求算法的时间复杂度为 O(log (m+n)) . 1.我的思路:直接用sort,时间复杂度应如 ...
- 《笨方法学Python》加分题35
sys.exit 用于结束程序 from sys import exit # 进入黄金房间后的逻辑 def gold_room(): print("This room is full of ...
- WinForm DotNetBar 动态添加DataGridView
DataGridView dgv = new DataGridView(); dgv.Dock = DockStyle.Fill; dgv.Location = new System.Drawing. ...
- GPS坐标系
本次测试之坑,人车定位偏差,分析如下 车的定位由后台提供,由gps上报位置,采用WGS-84坐标系 前端(app/小程序)使用腾讯地图,或者高德地图,采用的是GCJ-02坐标系,或者在GCJ-02基础 ...
- Finance财务软件(科目标签专题)
为了满足不同业务需求,对凭证中增加一些扩展内容,我们采用自定义科目标签的形式. 怎样自定义标签? 1. 增加科目掩码 这里的代码需要与模板表中tagLabel对应 这里的名称中对应掩码值,为16位整型 ...
- eclipse新建servers时选中tomcat版本后next是灰色的解决
有时在编辑器里删除server后就不能重新new了,因为不能点next. 试了下面的方法,可以用. 1.退出2.到[工程目录下]/.metadata/.plugins/org.eclipse.core ...
- mpi
使用MPI,计算cos x 函数的积分值,积分区间为(0,2PI)这里写图片描述基本思路: 把积分区间,分为相等若干块(此处起多少个线程,分多少块),每个线程分得一块积分区域,每块在分若干小块(此处定 ...