Js之Navigator对象「建议收藏」

Js之Navigator对象「建议收藏」敬请关注博客,后期不断更新优质博文,谢谢Window对象的navigator属性引用的是包含浏览器厂商和版本信息的Navigator对象。Navigator对象的命名是为了纪念Netscape之后NavigatorBU览器译注2,不过所有其他的浏览器也支持它(IE还支持clientlnformation属性,它作为navigator的厂商中立同义词。遗憾的是,其他浏览器并不支持这一更直观…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

敬请关注博客,后期不断更新优质博文,谢谢
Window对象的navigator属性引用的是包含浏览器厂商和版本信息的Navigator对象。Navigator对象的命名是为了纪念Netscape之后NavigatorBU览器译注2,不过所有其他的浏览器也支持它(IE还支持clientln formation属性,它作为navigator的厂商中立同义
词。遗憾的是,其他浏览器并不支持这一更直观的属性命名)。过去,Navigator对象通常被脚本用来确定它们是在IE中还是在Netscape中运行。这种浏览器嗅探方法有问题,因为它要求随着新浏览器和现有浏览器的新版本的引入而不断地
调整。如今,有一种更好的功能测试方法(参见13.4.3节),只需要测试所需要的功能(即,方法或属性),而不是偎设特定的浏览器版本及其功能。然而,浏览器嗅探有时候仍然有价值。这样的一种情况是,当需要解决存在于某个特定
的浏览器的特定版本中的特殊的bug时。Navigator对象有4个属性用于提供关于运行中的浏览器的版本信息,并且可以使用这些属性进行浏览器嗅探。

appName
Web浏览器的全称。在IE中,这就是“Microsoft Internet Explorer”。在Firefox中,该属性就是“Netscape”。为了兼容现存的浏览器嗅探代码,其他浏览器通常也取值为“Netscape”。
appVersion
此属性通常以数字开始,并跟着包含浏览器厂商和版本信息的详细字符串。字符串前面的数字通常是4.0或5.0,表示它是第4或第5代兼容的浏览器。appVersion字符串没有标准的格式,所以,没有办法直接用它来判断浏览器的类型。
userAgent
浏览器.在它的USER-AGENT HTTP头部中发送的字符串。这个属性通常包含appVersion中的所有信息,并且常常也可能包含其他的细节。和appVersion-样,它也没有标准的格式。由于这个属性包含绝大部分信息,因此浏览器嗅探代码通常用它来嗅探。
platform
在其上运行浏览器的操作系统(并且可能是硬件)的字符串。Navigator属性的复杂性正说明了浏览器嗅探对于处理客户端兼容性问题是没有太大帮助的。在Web的早期,人们写了大量的浏览器特定代码用于测试类似于navigator.appName
的属性。在开发新浏览器的时候,浏览器厂商发现为了让现有网站显示正确,它们需要把appName设置为“Netscape”。类似的做法使得appVersion的起始数字失去了意义,而现在的浏览器嗅探代码必须要依赖于比之前复杂很多的navigator.userAgent字符串。
例14-3展示了如何用正则表达式(摘自iQuery)从navigator.userAgent中抽取浏览器名称和版本号的方法。

复制代码
例14-3:使用navigator.userAgent~-进行浏览器嗅探
//为客户端嗅探定义browser.name和browser.version,这里使用了jOuery l.4.1中的代码
//name和number都是字符串,对于不同的浏览器输出的结果也是不一样的,检测结果如下:
J|
//”webkit”:Safari或Chrome;版本号是Webkit的版本号
//”opera”: Opera;版本号就是软件的版本号
//“mozilla”:Firefox或者其他基于gecko内核的浏览器;版本号是Gecko的版本
//”msie”:IE;版本号就是软件的版本
||
//比如Firefox 3.6返回:{name: “mozilla”, version: “1.9.2”}
var browser=(function(){
var s=navigator.userAgent.toLowerCase();
var match=/(webkit)\//.exec(s) ||
/(opera)(?: .*version)?\//.exec(s) ||
/(msie)([\w.]+)/.exec(s) ||
/compatible/.test(s)&&/(mozilla)(?:.*rv:([\w.]+))?/.exec(s)I l
[];
复制代码

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/194978.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 海尔楼宇可视对讲

    海尔楼宇可视对讲海尔楼宇可视对讲我公司是青岛海尔集团内的智能化产品生产企业。生产楼宇可视对讲等智能化设备,以海尔的品质为您的楼盘提升价值。 室内分机分类序号类型图片显示屏安装方式主要功能1黑白可视对讲分机HR-Q100AV 4寸黑白CRT壁挂式安装★免提通

  • VS2013激活码_vs2008 助手激活成功教程

    VS2013激活码_vs2008 助手激活成功教程下载:MSDNLibraryforVisualStudio2008(MSND)http://www.microsoft.com/downloads/details.aspx?FamilyID=7bbe5eda-5062-4ebb-83c7-d3c5ff92a373&DisplayLang=zh-cnVisualStudioTeamSystem2008Tea…

  • Java程序设计(高级及专题)- IO流与序列化

    Java程序设计(高级及专题)- IO流与序列化

  • 数组中键key相等时,后面的值覆盖前面的值

    数组中键key相等时,后面的值覆盖前面的值

  • iframe标签(页面嵌套)

    开发工具与关键技术:VS<iframe>作者:听民谣的老猫撰写时间:2019/6/1018:15上面两张图是两个不同的页面但是它们的基本框架都是一样,每点击一次左边的导航栏改变的都是中间的内容区域。也就是说共同的框架都是没有改变的,改变的是中间的内容。有没有什么方法可以不改变外面的基本框架只改变中间的内容???我们可以用页面嵌套方法来达到这一要求。页面嵌…

  • 什么是波特率,波特率怎么计算[通俗易懂]

    什么是波特率,波特率怎么计算[通俗易懂]✍什么是波特率,波特率怎么计算➹概述:  ☆简而言之,串口传输的波特率即为每秒钟传输二进制的位数。  ☆脱离枯燥乏味的文字描述,我们用波形和数字来看看波特率是什么吧☟。  ☆说明:系统时钟50M,波特率115200。  基础知识:因果系统时钟-50M时钟周期150∗106{{\rm{1}}\over{{\rm{50*1}}{{\rm{0}}^{\rm{6}}}}}50∗1061​假设1个时钟周期可以计数1次(其实FPGA就是这样)50M时钟1s计数5000

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号