js中的navigator对象及userAgent
阅读数:149 评论数:0
跳转到新版页面分类
html/css/js
正文
一、navigator
navigator为window对象的一个属性,指向一个包含浏览器相关信息的对象。
以下是 window.navigator
对象的一些常见属性:
-
navigator.appCodeName
- 浏览器的代码名的字符串表示(例如,"Mozilla")。
-
navigator.appName
- 官方浏览器名称的字符串表示(例如,"Netscape")。
-
navigator.appVersion
- 浏览器版本信息的字符串表示。
-
navigator.userAgent
- 用户代理头的字符串表示,包含了浏览器类型、版本、操作系统等信息。
-
navigator.platform
- 浏览器运行的操作系统平台的字符串表示。
-
navigator.language
- 浏览器当前选定的语言,通常是浏览器UI的语言。
-
navigator.languages
- 用户的首选语言列表,通常与HTTP请求的
Accept-Language
头部信息相对应。
- 用户的首选语言列表,通常与HTTP请求的
-
navigator.onLine
- 返回一个布尔值,表明浏览器是否在线。
-
navigator.cookieEnabled
- 返回一个布尔值,表明在当前浏览器中是否启用了cookie。
-
navigator.geolocation
- 用于获取设备的地理位置信息。
-
navigator.connection
- 提供有关系统的网络连接信息(如下载速度、上传速度和网络类型)。
-
navigator.javaEnabled()
- 方法返回一个布尔值,表明浏览器是否启用了Java。
-
navigator.plugins
- 描述浏览器安装的插件信息的数组。
-
navigator.serviceWorker
- 提供了一个注册、删除、更新和通信的Service Workers的接口。
-
navigator.hardwareConcurrency
- 返回一个整数,表示逻辑处理器的数量,允许开发者根据用户计算机的CPU核心数来优化线程使用。
-
navigator.doNotTrack
- 返回用户是否设置了"不跟踪"(DNT)标志,该标志表明用户不希望其浏览行为被跟踪。
-
navigator.permissions
- 提供了查询和更新权限的接口,可以用来检查和请求诸如地理位置、推送通知、摄像头访问等权限。
-
navigator.mediaDevices
提供访问连接到计算机的媒体输入设备,如摄像头和麦克风的能力。
二、常用例子
一些例子:
<script>
//判断当前页面所在的环境是不是微信内置浏览器
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|iOS
window.location.href ="iPhone.html";
} else if (/(Android)/i.test(navigator.userAgent)) { //判断Android
window.location.href ="Android.html";
} else { //pc
window.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");
}
}
</script>
var browser = {
versions: function () {
var u = navigator.userAgent, app = navigator.appVersion;
return { //移动终端浏览器版本信息
trident: u.indexOf('Trident') > -1, //IE内核
presto: u.indexOf('Presto') > -1, //opera内核
webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核
mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端
ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或uc浏览器
iPhone: u.indexOf('iPhone') > -1, //是否为iPhone或者QQHD浏览器
iPad: u.indexOf('iPad') > -1, //是否iPad
webApp: u.indexOf('Safari') == -1 //是否web应该程序,没有头部与底部
};
}(),
language: (navigator.browserLanguage || navigator.language).toLowerCase()
}
if (browser.versions.mobile) {//判断是否是移动设备打开。browser代码在下面
var ua = navigator.userAgent.toLowerCase();//获取判断用的对象
if (ua.match(/MicroMessenger/i) == "micromessenger") {
//在微信中打开
}
if (ua.match(/WeiBo/i) == "weibo") {
//在新浪微博客户端打开
}
if (ua.match(/QQ/i) == "qq") {
//在QQ空间打开
}
if (browser.versions.ios) {
//是否在IOS浏览器打开
}
if(browser.versions.android){
//是否在安卓浏览器打开
}
} else {
//否则就是PC浏览器打开
}
相关推荐
一、script标签属性
async
表示立即下载该脚本,但不妨碍页面中的其他操作,只对外部文件有效。
charset
与src属性一起使用,告诉浏览器用来编码这个javascript程序的
ECMAscript 5添加了第二种运行模式:严格模式(strict mode)。
//针对单个脚本
<script>
"use strict";
console.log("这是严格模式
在我们封装请求的js文件中加一个判断即可,先声明一个变量showMsg来控制是否需要弹框,初始化为true,然后在请求判断中如果token失效导致走了401,先判断当前是否可以显示弹框,初始化为
一、window对象
在javascript中,一个浏览器窗口就是一个window对象,window对象以及这些子对象,由于都是用于操作浏览器窗口,所以我们又称为BOM(Browser Object
Math.random()方法会返回介于0(包含)~1(不包含)之间的一个随机数。
舍掉小数点后的数值的方法有很多,如parseInt(),Math.ceil(),Math.flo
一、概述
所有语言中的代理,其本实现的是对原对象的操作的拦截和一些自定义行为。
二、语法
const p = new Proxy(target, handler)
1、target
可以是任何类型的
1、(前端)跨域请求是携带Cookie ,需要配置axios.defaults.withCredentials = true;2、(后端)响应需要携带响应头 Access-Control-Allow-
一、概述
函数实际上是对象,每个函数都是Function类型的实例,而且与其他引用类型一样具有属性和方法,因此函数名实际上也是一个指向函数对象的指针,因为函数名是指针,所以js没有函数重载。
func