判断当前浏览器环境(移动端)

前端判断当前浏览器环境

VARS.UA = window.navigator.userAgent;
// HTC Flyer平板的UA字符串中不包含Android关键词
// 极速模式下视频不显示 UCWEB/2.0 (Linux; U; Adr 4.0.3; zh-CN; LG-E612) U2/1.0.0 UCBrowser/9.6.0.378 U2/1.0.0 Mobile
VARS.IsAndroid = !!(/Android|HTC|Adr/i.test(VARS.UA) || !!(window.navigator.platform + '').match(/Linux/i));
//是否为iOSpad
VARS.IsIpad = !VARS.IsAndroid && /iPad/i.test(VARS.UA);
//是否为iOS
VARS.IsIphone = !VARS.IsAndroid && /iPod|iPhone/i.test(VARS.UA);
//是否是iphone9+的设备
var osversion = VARS.UA.match(/iPhone OS (\d*)/);
if (osversion && osversion[1] >= 9) {
  VARS.IsIphone9Plus = true;
} else {
  VARS.IsIphone9Plus = false;
}
//是否是是否是windows phone
VARS.IsWindowsPhone = /Windows Phone/i.test(VARS.UA);
//是否是老版本windows phone(8.1之前算) winphone 8.1之前算old(采用全屏播放),8.1(含)之后,采用的是标准播放(小窗+假全屏)
VARS.IsOldWindowsPhone = /Windows\sPhone\s([1234567]\.|8\.0)/i.test(VARS.UA);
//是否是windows系统
VARS.IsWindows = /Windows/i.test(VARS.UA);
//是否是vivo手机
VARS.IsVivoPhone = /vivo/i.test(VARS.UA);
//计算安卓设备比
if (VARS.IsAndroid) {

  if ((window['screen']['width'] / window['innerWidth']).toFixed(2) === VARS.PixelRatio.toFixed(2)) {
    VARS.ScreenSizeCorrect = 1 / VARS.PixelRatio;
  }
}
VARS.AdrPadRegex = /pad|XiaoMi\/MiPad|lepad|YOGA|MediaPad|GT-P|SM-T|GT-N5100|sch-i800|HUAWEI\s?[MTS]\d+-\w+|Nexus\s7|Nexus\s8|Nexus\s11|Kindle Fire HD|Tablet|tab/i;
VARS.ScreenSize = Math.floor(window.screen['width'] * VARS.ScreenSizeCorrect) + 'x' + Math.floor(window.screen['height'] * VARS.ScreenSizeCorrect);
//根据这些值就可以反向算出屏幕的物理尺寸 ,屏幕尺寸=屏幕对角线的像素值/(密度*160)
//屏幕尺寸=Math.sqrt(Math.pow(width, 2)+Math.pow(height, 2))/ (密度*160)

//是否是微信 webview
VARS.IsWeixinBrowser = !!(window['WeixinJSBridge'] || /MicroMessenger/i.test(VARS.UA));
//是否是小米 browser
VARS.IsMiBrowser = !!(/MiuiBrowser/i.test(VARS.UA));
//是否支持触屏
VARS.IsTouch = 'ontouchstart' in window;
//是否是小米的设备
VARS.IsXiaoMI = /MI/i.test(VARS.UA);
//是否是索尼手机
VARS.IsSonyPhone = /Sony/i.test(VARS.UA);
//是否是PC设备
VARS.IsPC = !VARS.IsIOS && !VARS.IsAndroid && !VARS.IsWindowsPhone && !VARS.IsWindowsPad && !/Mobile/i.test(VARS.UA);
//是否是微信小程序 webview  小程序开发文档中建议方式 在网页内可通过window.__wxjs_environment变量判断是否在小程序环境
VARS.IsMiniProgramWebview = !!((window['WeixinJSBridge'] || /MicroMessenger/i.test(VARS.UA)) && /miniprogram/i.test(VARS.UA));

在后端判断当前请求的发起是移动端H5还是PC端发起,可以通过检查请求头(User-Agent)中的信息来进行判断。User-Agent是一个HTTP请求头字段,它包含了客户端(浏览器、移动应用等)的相关信息。 以下是一种基本的方法来判断当前请求是移动端H5还是PC端发起的: ```java import javax.servlet.http.HttpServletRequest; public class RequestUtil { public static boolean isMobile(HttpServletRequest request) { String userAgent = request.getHeader("User-Agent"); // 根据User-Agent判断是否为移动端 // 例如判断是否包含"Mobile"关键字 return userAgent != null && userAgent.contains("Mobile"); } } ``` 在上述示例中,通过`request.getHeader("User-Agent")`方法获取请求头中的User-Agent信息,然后根据特定的规则判断是否为移动端。这里只是一个简单的示例,实际判断逻辑可能需要更加复杂的正则表达式或其他方式。 你可以在Controller中使用`RequestUtil.isMobile(request)`方法来判断当前请求是否为移动端,从而根据不同的情况进行相应的处理。 ```java @RestController public class MyController { @PostMapping("/myEndpoint") public ResponseEntity<String> myEndpoint(HttpServletRequest request) { if (RequestUtil.isMobile(request)) { // 处理移动端请求逻辑 } else { // 处理PC端请求逻辑 } return ResponseEntity.ok("Success"); } } ``` 需要注意的是,User-Agent可以被客户端自由修改,因此不能完全依赖User-Agent来确定请求的发起方。在某些情况下,可能需要结合其他的方式进行判断,例如根据请求的URL、请求参数等综合判断
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值