Navigator 对象,能够清楚地知道浏览器的相关信息

Navigator 对象属性

appCodeName属性

功能:返回浏览器的代码名。该属性是一个只读的字符串。

语法:navigator.appCodeName

总结:在所有以Netscape代码为基础的浏览器中,它的值是"Mozilla"。为了兼容起见,在Microsoft的浏览器中,它的值也是"Mozilla",同时在safari在浏览器的console里运行navigator.appCodeName得出的结果还是"Mozilla"。所以这个看起来并不实用,因为IE、chrome、safari返回的都是“Mozilla”;

appName属性

功能:返回所使用浏览器的名称。该属性是一个只读的字符串。

语法:navigator.appName

总结:由于兼容性问题,HTML5 规范允许该属性返回 "Netscape" 。在chrome、safari的里面都是返回"Netscape"。该属性并不一定能返回正确的浏览器名称。在基于 Gecko 的浏览器 (例如 Firefox)和基于 WebKit 的浏览器(例如 Chrome 和 Safari)中,返回的浏览器名称都是 "Netscape"。

appVersion属性【已废弃】

功能:返回浏览器的平台和版本信息。该属性是一个只读的字符串。

语法:navigator.appVersion

总结:它可能只包含一个版本数字,如 "5.0",还可能包含一些其他的相关信息。由于兼容性问题,HTML5规范允许该属性返回 "4.0"。不要指望该属性返回正确的值。该特性已经从 Web 标准中删除,虽然一些浏览器目前仍然支持它,但也许会在未来的某个时间停止支持,请尽量不要使用该特性。

browserLanguage属性【大部分浏览器尝试也都比较支持,尽量不使用】

功能:返回当前浏览器的语言。该属性是一个只读的字符串。

语法:navigator.browserLanguage

总结:--

cookieEnabled属性【大部分浏览器尝试也都比较支持,尽量不使用】

功能:返回指明浏览器中是否启用 cookie 的布尔值。该属性是一个只读的字符串。

语法:navigator.cookieEnabled

总结:--

cpuClass属性

功能:返回浏览器系统的 CPU 等级。该属性是一个只读的字符串。

语法:navigator.cpuClass

总结:--

platform属性

功能:返回运行浏览器的操作系统平台。该属性是一个只读的字符串。

语法:navigator.platform

总结:platform 可能是: "Win32", "Linux i686", "MacPPC", "MacIntel", 等,在一定程度上可以用来区分移动端和pc端,但不是很好的方案。

systemLanguage属性【大部分浏览器尝试也都比较支持,尽量不使用】

功能:返回 OS 使用的默认语言。该属性是一个只读的字符串。

语法:navigator.systemLanguage

总结:--

product属性

功能:该属性返回当前浏览器的产品名称。该属性是一个只读的字符串。

语法:navigator.product

总结:该属性不一定返回一个真实的产品名称。Gecko 和 WebKit 浏览器返回 "Gecko" 作为该属性的值。

userAgent属性【重点】

功能:返回当前浏览器发送服务器的用户代理(user-agent)头部的值(字符串)。该属性是一个只读的字符串。

语法:navigator.userAgent

总结:先看看chrome、safari、ios、android的返回值:

 1 chrome:
 2     Mozilla/5.0 
 3     (Macintosh; Intel Mac OS X 10_12_6) 
 4     AppleWebKit/537.36 (KHTML, like Gecko) 
 5     Chrome/61.0.3163.91 Safari/537.36
 6 safari:
 7     Mozilla/5.0 
 8     (Macintosh; Intel Mac OS X 10_12_6) 
 9     AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 
10     Safari/604.1.38
11 ios11刘海X:
12     Mozilla/5.0 
13     (iPhone; CPU iPhone OS 11_0 like Mac OS X) 
14     AppleWebKit/604.1.38 (KHTML, like Gecko) 
15     Version/11.0 Mobile/15A372 Safari/604.1
16 ipad:
17     Mozilla/5.0 
18     (iPad; CPU OS 9_1 like Mac OS X) 
19     AppleWebKit/601.1.46 (KHTML, like Gecko)
20     Version/9.0 Mobile/13B143 Safari/601.1
21 galxy sansum:
22     Mozilla/5.0 
23     (Linux; Android 5.0; SM-G900P Build/LRX21T) 
24     AppleWebKit/537.36 (KHTML, like Gecko) 
25     Chrome/61.0.3163.91 Mobile Safari/537.36
26 安装uc浏览器:
27     Mozilla/5.0 
28     (Linux; U; Android 6.0.1; zh-CN; Mi Note 2 Build/MXB48T)
29     AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 
30     Chrome/40.0.2214.89 UCBrowser/11.4.9.941 Mobile Safari/537.36
31 winphone:
32     Mozilla/5.0 
33     (Linux; Android 5.1.1; Nexus 6 Build/LYZ28E) 
34     AppleWebKit/537.36 (KHTML, like Gecko) 
35     Chrome/61.0.3163.91 Mobile Safari/537.36
36 hybrid方法的可能:
37     Mozilla/5.0 
38     (iPhone; CPU iPhone OS 11_0 like Mac OS X) 
39     AppleWebKit/604.1.38 (KHTML, like Gecko) 
40     Mobile/15A372 weibo/80011134

 一般来讲,它是在 navigator.appCodeName 的值之后加上斜线和 navigator.appVersion 的值构成的。

例子:

  • 判断当前页面所在的环境是不是微信内置浏览器
function isWeiXin () {var ua = window.navigator.userAgent.toLowerCase();if (ua.match(/MicroMessenger/i) == 'micromessenger') {return true;} else {return false;}
}
  • 判断苹果、安卓、pc
if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) { //判断iPhone|iPad|iPod|iOSwindow.location.href ="iPhone.html";
} else if (/(Android)/i.test(navigator.userAgent)) {  //判断Androidwindow.location.href ="Android.html";
} else { //pcwindow.location.href ="pc.html";
};
  • 正则表达式判断浏览器类型
function userBrowser(){   var browserName=navigator.userAgent.toLowerCase();   if(/msie/i.test(browserName) && !/opera/.test(browserName)){   alert("IE");   return ;   }else if(/firefox/i.test(browserName)){   alert("Firefox");   return ;   }else if(/chrome/i.test(browserName) && /webkit/i.test(browserName) && /mozilla/i.test(browserName)){   alert("Chrome");   return ;   }else if(/opera/i.test(browserName)){   alert("Opera");   return ;   }else if(/webkit/i.test(browserName) &&!(/chrome/i.test(browserName) && /webkit/i.test(browserName) && /mozilla/i.test(browserName))){   alert("Safari");   return ;   }else{   alert("unKnow");   }   
}  

userLanguage属性【大部分浏览器尝试也都比较支持,尽量不使用】

功能:返回 OS 的自然语言设置。该属性是一个只读的字符串。

语法:navigator.userLanguage

总结:--

作用(navigator.userAgent简称UA)

  • 统计用户浏览器使用情况。有些浏览器说被多少人使用了,实际上就可以通过判断每个IP的UA来确定这个IP是用什么浏览器访问的,以得到使用量的数据。
  • 根据用户使用浏览器的不同,显示不同的排版从而为用户提供更好的体验。有些网站会根据这个来调整打开网站的类型,如是手机的就打开wap,显示非手机的就打开pc常规页面。用手机访问谷歌和电脑访问是不一样的,这些是谷歌根据访问者的UA来判断的。

转载于:https://www.cnblogs.com/jameBo/p/10566471.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/278130.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jerry和您聊聊Chrome开发者工具

2019独角兽企业重金招聘Python工程师标准>>> Chrome开发者工具是Jerry日常工作使用的三大调试器之一。虽然工具名称前面带了个"开发者", 但是它对非开发人员仍然有用。不信? 用Chrome打开我们常用的网站,按F12,在Consol…

BZOJ4314 倍数?倍数!

好神仙啊.... 题意 在$ [0,n) $中选$ k$个不同的数使和为$ n$的倍数 求方案数 $ n \leq 10^9, \ k \leq 10^3$ 题解 k可以放大到1e6的 先不考虑$ k$的限制 对答案构建多项式$ f(x)\prod\limits_{i0}^{n-1}(x^i1)$ 答案就是这个多项式所有次数为$ n$的倍数的项的系数和 考虑单位…

win2008R2管理员密码修改文档

场景:忘记了win2008R2服务器的管理员密码。解决办法:1、 制作一个U盘启动盘:2、 系统通过U盘启动进入WINpe系统3、 在知道Win2008安装位置的情况下;查找C:\windows\system32\osk.exe 将osk.exe文件修改为:osk.exe.bat&…

Python档案袋( 面向对象 )

类即是一个模型,根据模型建立起不同的对象,对象间拥有共同的一些属性 简单的类: 1 class P:2 #类变量,所有实例共享变量,推荐使用方法是:类名.类变量名3 pvarx"ppvar1"4 5 #构造函数6 def _…

javascript中的后退和刷新

转自&#xff1a;https://www.cnblogs.com/tylerdonet/p/3911303.html <input typebutton value刷新 οnclick"window.location.reload()"><input typebutton value前进 οnclick"window.history.go(1)"><input typebutton value后退 οncl…

第四周

7-2 选择法排序 &#xff08;20 分) 本题要求将给定的n个整数从大到小排序后输出。 输入格式&#xff1a; 输入第一行给出一个不超过10的正整数n。第二行给出n个整数&#xff0c;其间以空格分隔。 输出格式&#xff1a; 在一行中输出从大到小有序的数列&#xff0c;相邻数字间有…

checkPathValidity 检查所有agent的corridor的m_path是否有效

在checkPathValidity&#xff08;检查所有agent的corridor的m_path是否有效&#xff09; 如果是无效的要进行重新设置并且设置replan 首先获得第一个polygon&#xff0c;m_path[0] 这里&#xff0c;因为addagent的时候&#xff0c;ag->corridor.reset(ref, nearest); m_path…

来谈谈JAVA面向对象 - 鲁班即将五杀,大乔送他回家??

开发IDE为Eclipse或者MyEclipse。 首先&#xff0c;如果我们使用面向过程的思维来解决这个问题&#xff0c;就是第一步做什么&#xff0c;第二步做什么&#xff1f; 鲁班即将五杀&#xff0c;大乔送他回家 这个现象可以简单地拆分为两步&#xff0c;代码大概是这个样子的: publ…

Vue 教程第一篇——基础概念

认识 Vue 关于 Vue 的描述有不少&#xff0c;不外乎都会拿来与 Angular 和 React 对比&#xff0c;同样头顶 MVVM 双向数据驱动设计模式光环的 Angular 自然被对比的最多&#xff0c;但到目前为止&#xff0c;Angular 在热度上已明显不及 Vue&#xff0c;性能已成为最大的诟病。…

Microsoft Teams的Outgoing Webhook开发入门

Microsoft Teams的应用程序有几种形式&#xff1a; TabsBotsConnectorsMessaging extensionsActivity feed integrationsOutgoing web hooks 这篇我们主要介绍如何使用 ASP.NET Core来开发最简单的Outgoing web hook。 什么是outgoing webhook Outgoing webhooks allow you t…

0418 jQuery笔记(添加事件、each、prop、$(this))

1.添加点击事件、each、prop、$(this) 1 //全选框的被动操作2 //定义一个标志保存最终状态3 var flag false;4 //为每一个选择框添加点击事件&#xff0c;数组.click()5 $(.chex).click(function(){6 //遍历数组&#xff0c;数组.each()7 …

[WC2008]游览计划(斯坦纳树)

[Luogu4294] 题解 : 斯坦纳树 \(dp[i][j]\) 表示以\(i\)号节点为根&#xff0c;当前状态为\(j\)&#xff08;与\(i\)连通的点为\(1\)&#xff09; 当根\(i\)不改变时状态转移方程是&#xff1a; \(dp[i][j] \min_{s \in j}\{dp[i][s] dp[i][\complement_js] - val[i]\}\) 当根…

使用dotnet template快速开发Microsoft Teams Outgoing Web Hook

在上一篇文章中&#xff0c;我们一步步从无到有在Microsoft Teams中开发了一个简单的Outgoing Webhook&#xff0c;并和我们本地的Web API应用程序产生交互&#xff0c;总结起来的步骤大概如下&#xff1a; 导航到“团队” Tab页&#xff0c; 选中需要建立的Channel, 选中“应…

[Swift]LeetCode1013. 将数组分成和相等的三个部分 | Partition Array Into Three Parts With Equal Sum...

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号&#xff1a;山青咏芝&#xff08;shanqingyongzhi&#xff09;➤博客园地址&#xff1a;山青咏芝&#xff08;https://www.cnblogs.com/strengthen/&#xff09;➤GitHub地址&a…

京津冀产业协同升级 智慧城市等高端产业需求遇热

云计算、智慧交通、城市环保科技等高端智慧城市产业项目正成为京津冀产业协同的新关注点。 21日&#xff0c;在由北京市经信委、天津市工信委、河北省工信厅联合组织的京津冀产业协同发展招商推介专项行动上&#xff0c;超过200家与会企业共完成产业对接项目额达311.7亿元。与以…

Microsoft Teams:删除成员账户其历史聊天会发生什么?

介绍&#xff1a; 此博客文章的目的是演示从Office 365删除用户的账号后&#xff0c;此用户在Microsoft Teams群聊和私聊中的历史聊天记录会发生什么改变。 以下是Microsoft Teams聊天对话&#xff0c;其中Adele和其他团队成员正在参与对话&#xff1a; 此外, Adele和Mega还在…

PostgreSQL Huge Page 使用建议 - 大内存主机、实例注意

标签 PostgreSQL , Linux , huge page , shared buffer , page table , 虚拟地址 , 物理地址 , 内存地址转换表 背景 当内存很大时&#xff0c;除了刷脏页的调度可能需要优化&#xff0c;还有一方面是虚拟内存与物理内存映射表相关的部分需要优化。 1 脏页调度优化 1、主要包括…

Microsoft Teams:团队Owner离开公司后,我们该怎么做?

您是否曾在这么一个团队里&#xff0c;该团队唯一有Owner权限的人离开了公司&#xff1f;不幸的是,如果这个人不再在公司里&#xff0c;您可能觉得没有办法让其他团队成员再成为team的owner。我有一个简单易用的解决方案&#xff0c;但您需要成为Office 365租户的Admin或联系你…

python网络编程-socket编程

一、服务端和客户端 BS架构 &#xff08;腾讯通软件&#xff1a;serverclient&#xff09; CS架构 &#xff08;web网站&#xff09; C/S架构与socket的关系&#xff1a; 我们学习socket就是为了完成C/S架构的开发 二、OSI七层模型 互联网协议按照功能不同分为osi七层或tcp/ip五…

使用PowerShell配置Microsoft Teams

作为 IT 专业人员, 我一直在寻找自动化任务的方法, 并使日常操作简单。当使用Microsoft Teams时, 是否能够在团队中自动创建团队&#xff0c;渠道和设置对于Microsoft Teams组建的成功与否至关重要。PowerShell对Microsoft Teams的支持使您可以做到这一点&#xff0c;它为我提供…