JS判断页面是否在PC端打开以及系统种类或者苹果端或者微信端和浏览器种类版本

本文提供了用于检测网页访问设备类型(如PC、苹果设备等)、操作系统(如Windows、Mac等)以及浏览器种类和版本(如IE、Chrome等)的JavaScript函数。这些函数有助于开发者根据不同的客户端环境调整页面布局和功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网页是否在 PC 端打开,可以帮助我们对页面进行调整,判断系统种类方便我们统计信息,判断浏览器种类版本,方便我们处理兼容问题,参考代码如下:


// 页面在pc端打开时,返回true;否则返回false
function checkPC(){
    var agentstr = navigator.userAgent.toLowerCase();
    // var agentstr = req.headers['user-agent'].toLowerCase();  // nodejs
	var agentreg = /(iphone|ipod|ipad|android|symbianos|windows phone|playbook|mobile)/;
	var agentph = agentstr.match(agentreg);
	if(agentph){
		return false;
	}else{
		return true;
	}
}

// 判断操作系统  Mac Unix Linux Win2000 Win2003 WinXP WinVista Win7 other
function checkOS(){
    var ua = navigator.userAgent;
    var isWin = (navigator.platform == "Win32") || (navigator.platform == "Windows");

    var isMac = (navigator.platform == "Mac68K") || (navigator.platform == "MacPPC") || (navigator.platform == "Macintosh") || (navigator.platform == "MacIntel");
    if (isMac) return "Mac";

    var isUnix = (navigator.platform == "X11") && !isWin && !isMac;
    if (isUnix) return "Unix";

    var isLinux = (String(navigator.platform).indexOf("Linux") > -1);
    if (isLinux) return "Linux";

    if (isWin) {
        var isWin2K = ua.indexOf("Windows NT 5.0") > -1 || ua.indexOf("Windows 2000") > -1;
        if (isWin2K) return "Win2000";

        var isWinXP = ua.indexOf("Windows NT 5.1") > -1 || ua.indexOf("Windows XP") > -1;
        if (isWinXP) return "WinXP";

        var isWin2003 = ua.indexOf("Windows NT 5.2") > -1 || ua.indexOf("Windows 2003") > -1;
        if (isWin2003) return "Win2003";

        var isWinVista= ua.indexOf("Windows NT 6.0") > -1 || ua.indexOf("Windows Vista") > -1;
        if (isWinVista) return "WinVista";

        var isWin7 = ua.indexOf("Windows NT 6.1") > -1 || ua.indexOf("Windows 7") > -1;
        if (isWin7) return "Win7";

    }
    return "other";
}

// 页面由苹果设备打开时,返回true;否则返回false
function checkApple(){
    var ua = navigator.userAgent;
    if(/AppleWebKit.*Mobile/i.test(ua) || (/MIDP|SymbianOS|NOKIA|SAMSUNG|LG|NEC|TCL|Alcatel|BIRD|DBTEL|Dopod|PHILIPS|HAIER|LENOVO|MOT-|Nokia|SonyEricsson|SIE-|Amoi|ZTE/.test(ua))){
		if(/iPhone|mac|iPod|iPad/i.test(ua)){
			return true;
   		} else {
    		return false;
   		}
    } else if(ua.indexOf('iPad') > -1){
        return true;
    }else{
        return false;
    }
}

// 页面由微信打开时,返回true;否则返回false
function checkWeixin(){  
    var ua = navigator.userAgent.toLowerCase();  
    if(ua.match(/MicroMessenger/i) == "micromessenger") {  
        return true;  
    } else {  
        return false;  
    }  
}  

// 获取浏览器种类和版本
function checkBrowser(){
      var ua = navigator.userAgent.toLowerCase();
      var reg_ie = /msie [\d.]+;/gi;
      var reg_ff = /firefox\/[\d.]+/gi;
      var reg_chrome = /chrome\/[\d.]+/gi;
      var reg_saf = /safari\/[\d.]+/gi;
      var reg_opr = /opr\/[\d.]+/gi;

      if(ua.indexOf("msie") > 0){
          return ua.match(reg_ie)[0];
      }
      // IE11版本中不包括MSIE字段
      if(ua.indexOf("trident") > 0 && ua.indexOf("rv") > 0){
          return "IE " + ua.match(/rv:(\d+\.\d+)/)[1];
      }
      
      if(ua.indexOf("firefox") > 0){
          return ua.match(reg_ff)[0];
      }

      if(ua.indexOf("safari") > 0 && ua.indexOf("opr") > 0){
          return ua.match(reg_opr)[0];
      }
      
      if(ua.indexOf("safari") > 0 && ua.indexOf("chrome") < 0){
          return ua.match(reg_saf)[0];
      }

      if(ua.indexOf("chrome") > 0){
          return ua.match(reg_chrome)[0];
      }
}

### 如何通过 User-Agent 判断请求来自 PC 还是移动 为了实现对设备类型的检测并区分网页访问来源,可以通过分析 HTTP 请求头中的 `User-Agent` 字段完成此任务。以下是具体方法: #### 方法一:基于关键词匹配 可以提取 `User-Agent` 的值,并查找其中是否存在特定的移动关键字。如果存在,则认为请求来源于移动设备;否则,默认为 PC 。 常见的移动关键字包括但不限于以下内容[^1]: - Android - iPhone - iPad - iPod - BlackBerry - IEMobile - Mobile Safari 代码示例如下: ```python def is_mobile(user_agent): mobile_keywords = ['Android', 'iPhone', 'iPad', 'iPod', 'BlackBerry', 'IEMobile', 'Mobile'] for keyword in mobile_keywords: if keyword in user_agent: return True return False ``` #### 方法二:正则表达式匹配 除了简单的字符串包含检查外,还可以利用正则表达式更精确地识别 `User-Agent` 中的关键字组合。这种方法能够更好地处理复杂的场景。 示例代码如下: ```python import re def is_mobile_regex(user_agent): regex = re.compile(r'(Android|iPhone|iP[a-zA-Z]+|BlackBerry|IEMobile)', re.IGNORECASE) return bool(regex.search(user_agent)) ``` #### 方法三:Nginx 配置文件过滤 在服务器层面也可以直接配置 Nginx 来区分流量源。通过设置条件语句捕获含有移动特征的请求,并将其重定向到指定路径或标记为移动请求[^2]。 Nginx 配置片段如下所示: ```nginx if ($http_user_agent ~* "(android|bb\d+;|iphone|ipod|mobi|blackberry)") { set $device_type "mobile"; } if ($http_user_agent ~* "windows") { set $device_type "pc"; } location / { add_header X-Device-Type "$device_type"; # 将结果作为响应头部返回给客户 } ``` 以上三种方式均可以根据实际需求灵活选用。需要注意的是,在某些特殊情况下(如伪装UA),单纯依赖上述逻辑可能无法完全准确地区分设备类型[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

codehuicn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值