iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JavaScript判断是否手机浏览器的五种方法
  • 773
分享到

JavaScript判断是否手机浏览器的五种方法

JavaScript判断是否手机js判断是pc 2022-11-21 22:11:59 773人浏览 独家记忆
摘要

目录一、navigator.userAgent二、window.screen,window.innerWidth三、window.orientation四、touch 事件五、win

现在手机网站已经很普及了,有时候前端网页需要判断,用户使用的是手机浏览器还是电脑浏览器。这篇文章整理了javascript判断是否手机浏览器的五种方法,通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值。

一、navigator.userAgent

最简单的方法也是最常用的方法,就是分析浏览器的 user agent 字符串,它包含了设备信息。

js 通过navigator.userAgent属性拿到这个字符串,只要里面包含mobiAndroidiphone等关键字,就可以认定是移动设备。


if (/Mobi|Android|iPhone/i.test(navigator.userAgent)) {
  // 当前设备是移动设备
}

// 另一种写法
if (
  navigator.userAgent.match(/Mobi/i) ||
  navigator.userAgent.match(/Android/i) ||
  navigator.userAgent.match(/iPhone/i)
) {
  // 当前设备是移动设备
}

这种方法的优点是简单方便,缺点是不可靠,因为用户可以修改这个字符串,让手机浏览器伪装成桌面浏览器。

Chromium 系的浏览器,还有一个navigator.userAgentData属性,也是类似的作用。不同之处是它将 user agent 字符串解析为一个对象,该对象的mobile属性,返回一个布尔值,表示用户是否使用移动设备。


const isMobile = navigator.userAgentData.mobile; 

注意,苹果的 Safari 浏览器和 Firefox 浏览器都不支持这个属性,具体情况可以查看Caniuse 网站。

此外,还有一个已经废除的navigator.platfORM属性,所有浏览器都支持,所以也可以用。它返回一个字符串,表示用户的操作系统


if (/Android|iPhone|iPad|iPod/i.test(navigator.platform)) {
  // 当前设备是移动设备
}

二、window.screen,window.innerWidth

另一种方法是通过屏幕宽度,判断是否为手机。

window.screen对象返回用户设备的屏幕信息,该对象的width属性是屏幕宽度(单位为像素)。


if (window.screen.width < 500) {
  // 当前设备是移动设备 
}

上面示例中,如果屏幕宽度window.screen.width小于500像素,就认为是手机。

这个方法的缺点在于,如果手机横屏使用,就识别不了。

另一个属性window.innerWidth返回浏览器窗口里面的网页可见部分的宽度,比较适合指定网页在不同宽度下的样式。


const getBrowserWidth = function() {
  if (window.innerWidth < 768) {
    return "xs";
  } else if (window.innerWidth < 991) {
    return "sm";
  } else if (window.innerWidth < 1199) {
    return "md";
  } else {
    return "lg";
  }
};

三、window.orientation

第三种方法是侦测屏幕方向,手机屏幕可以随时改变方向(横屏或竖屏),桌面设备做不到。

window.orientation属性用于获取屏幕的当前方向,只有移动设备才有这个属性,桌面设备会返回undefined


if (typeof window.orientation !== 'undefined') {
  // 当前设备是移动设备 
}

注意,iPhone 的 Safari 浏览器不支持该属性。

四、touch 事件

第四种方法是,手机浏览器的 DOM 元素可以通过ontouchstart属性,为touch事件指定监听函数。桌面设备没有这个属性。


function isMobile() { 
  return ('ontouchstart' in document.documentElement); 
}

// 另一种写法
function isMobile() {
  try {
    document.createEvent("TouchEvent"); return true;
  } catch(e) {
    return false; 
  }
}

五、window.matchMedia()

结合 CSS 来判断。

CSS 通过 media query(媒介查询)为网页指定响应式样式。如果某个针对手机的 media query 语句生效了,就可以认为当前设备是移动设备。

window.matchMedia()方法接受一个 CSS 的 media query 语句作为参数,判断这个语句是否生效。


let isMobile = window.matchMedia("only screen and (max-width: 760px)").matches;

上面示例中,window.matchMedia()的参数是一个 CSS 查询语句,表示只对屏幕宽度不超过 700 像素的设备生效。它返回一个对象,该对象的matches属性是一个布尔值。如果是true,就表示查询生效,当前设备是手机。

除了通过屏幕宽度判断,还可以通过指针的精确性判断。


let isMobile = window.matchMedia("(pointer:coarse)").matches;

上面示例中,CSS 语句pointer:coarse表示当前设备的指针是不精确的。由于手机不支持鼠标,只支持触摸,所以符合这个条件。

有些设备支持多种指针,比如同时支持鼠标和触摸。pointer:coarse只用来判断主指针,此外还有一个any-pointer命令判断所有指针。


let isMobile = window.matchMedia("(any-pointer:coarse)").matches;

上面示例中,any-pointer:coarse表示所有指针里面,只要有一个指针是不精确的,就符合查询条件。

六、工具包

除了上面这些方法,也可以使用别人写好的工具包。这里推荐 React-device-detect,它支持多种粒度的设备侦测。


import {isMobile} from 'react-device-detect';

if (isMobile) {
  // 当前设备是移动设备
}

到此这篇关于JavaScript判断是否手机浏览器的五种方法的文章就介绍到这了,更多相关js判断是手机的五种方法内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: JavaScript判断是否手机浏览器的五种方法

本文链接: https://www.lsjlt.com/news/173296.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavaScript判断是否手机浏览器的五种方法
    目录一、navigator.userAgent二、window.screen,window.innerWidth三、window.orientation四、touch 事件五、win...
    99+
    2022-11-21
    JavaScript判断是否手机 js判断是pc
  • javascript判断是否ie浏览器的方法
    这篇文章主要介绍javascript判断是否ie浏览器的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!方法:首先用“navigator.userAgent”取得浏览器的userAgent字符串;然后用“userA...
    99+
    2023-06-15
  • JavaScript怎么判断浏览器是否是IE
    小编给大家分享一下JavaScript怎么判断浏览器是否是IE,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!首先,有些属性和方法是所有版本IE都不支持,那么只需要...
    99+
    2023-06-06
  • 多种方法判断Javascript对象是否存在
    Javascript语言的设计不够严谨,很多地方一不小心就会出错。 举例来说,请考虑以下情况。 现在,我们要判断一个全局对象myObj是否存在,如果不存在,就对它进行声明。用自然语言...
    99+
    2022-11-15
    判断存在 js对象
  • JavaScript判断是否为数组的各种方法汇总
    目录前言 Array.isArray constructor instanceof isPrototypeOf Object.prototype.toString typeof 总结...
    99+
    2024-04-02
  • 如何使用JavaScript实现手机端判断浏览器类型
    这篇文章主要介绍如何使用JavaScript实现手机端判断浏览器类型,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!手机端判断浏览器类型BrowserInfo = {  &nbs...
    99+
    2023-06-20
  • php判断是否为移动手机端的方法
    这篇文章主要介绍“php判断是否为移动手机端的方法”,在日常操作中,相信很多人在php判断是否为移动手机端的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php判断是否为移动手机端的方法”的疑惑有所帮助!...
    99+
    2023-06-20
  • html5中怎么判断浏览器是否支持canvas
    html5中怎么判断浏览器是否支持canvas,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。代码如下:<!DOCTYPE ...
    99+
    2024-04-02
  • javascript判断是否为函数的方法
    这篇文章将为大家详细讲解有关javascript判断是否为函数的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在javascript中,可以借助typeof和“===”操作符来判断是否为函数,语法格式...
    99+
    2023-06-14
  • JavaScript判断是否为数字的方法
    这篇文章主要讲解了“JavaScript判断是否为数字的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript判断是否为数字的方法”吧!JavaScript判断是否为数字的方...
    99+
    2023-06-14
  • 怎么判断当前浏览器是否是微信浏览器或者移动端
    怎么判断当前浏览器是否是微信浏览器或者移动端,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1,用JS代码判断浏览器是否为微信浏览器function is_weixn(...
    99+
    2023-06-20
  • python 判断是否汉字的几种方法
    1. 使用Python内置的ord() ord()函数将字符转换为Unicode编码,然后判断其范围是否在汉字的范围内: 示例代码: def is_chinese(char): ...
    99+
    2023-09-12
    python 正则表达式 开发语言
  • 怎么在判断使用的浏览器是否支持css3
    怎么在判断使用的浏览器是否支持css3?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。CSS @supports规则:语法:@supports (rul...
    99+
    2023-06-14
  • javascript判断值是否为数字的方法
    这篇“javascript判断值是否为数字的方法”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“javascript判断值是否为数字的方法”,给大家总结了以下内容,具有一定借鉴价值,内容详细步骤清晰,细节处理妥当,希望大家通过...
    99+
    2023-06-06
  • javascript判断变量是否相等的方法
    这篇文章主要介绍javascript判断变量是否相等的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!判断方法:1、利用相等运算符“==”或者“===”;2、利用数组中的toString()方法;3、利用“Obje...
    99+
    2023-06-14
  • js如何实现手机端判断浏览器类型
    这篇文章主要介绍了js如何实现手机端判断浏览器类型,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。手机端判断浏览器类型BrowserInfo = {&nbs...
    99+
    2023-06-27
  • JS判断对象属性是否存在的五种方案分享
    目录背景检查属性是否存在inReflect.has()hasOwnProperty构造函数法对象字面量缺点不支持create覆盖报错Object.prototype.hasOwnPr...
    99+
    2024-04-02
  • javascript判断是否为数字类型的方法
    小编给大家分享一下javascript判断是否为数字类型的方法,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!方法:1、利用typeof关键字和isNaN()函数判断;2、利用typeof关键字和isFinite()函数判断...
    99+
    2023-06-14
  • js、css、html怎样判断浏览器的各种版本
    小编给大家分享一下js、css、html怎样判断浏览器的各种版本,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!利用正则表达式来判断ie浏览器版本 判断是否IE浏览...
    99+
    2023-06-08
  • MySQL判断时间段是否重合的两种方法
    两种写法。如图,4种重合情况和2种不重合情况。 第一种写法: -- 时间段 a,b SELECT * FROM table WHERE (star...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作