在进行渠道管理时,由于要在各种不同端(包括任何形式的pc端、移动端、app、Android/IOS、小程序等)中内嵌h5页面来展示不同的内容,且具有良好的兼容性。使用
navigator.userAgent
可以实现该功能,且在所有浏览器都支持。
原文链接:https://blog.csdn.net/XH_jing/article/details/108355386
一句就可以判断是什么端
1 window.location.href = /Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent) 2 ? "mobile_web端页面" : "PC端页面" 3 // 通过正则来判断 4 // 如果是手机端跳转到 mobile_web端页面 5 // 如果是PC端跳转到 PC端页面
- 在PC端打开 ,
navigator.userAgent
显示如下
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36
- 在手机web端打开 ,
navigator.userAgent
显示如下
Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1
二.navigator.userAgent
应用场景
1 <script> 2 console.log(navigator.userAgent); 3 window.location.href=/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)?"http://localhost:8888/mobile_web":"http://localhost:8888/PC"; 4 </script>
1 <script> 2 console.log(navigator.userAgent); 3 var os = function (){ 4 var ua = navigator.userAgent, 5 isWindowsPhone = /(?:Windows Phone)/.test(ua), 6 isSymbian = /(?:SymbianOS)/.test(ua) || isWindowsPhone, 7 isAndroid = /(?:Android)/.test(ua), 8 isFireFox = /(?:Firefox)/.test(ua), 9 isChrome = /(?:Chrome|CriOS)/.test(ua), 10 isTablet = /(?:iPad|PlayBook)/.test(ua) || (isAndroid && !/(?:Mobile)/.test(ua)) || (isFireFox && /(?:Tablet)/.test(ua)), 11 isPhone = /(?:iPhone)/.test(ua) && !isTablet, 12 isPc = !isPhone && !isAndroid && !isSymbian; 13 return { 14 isTablet: isTablet, 15 isPhone: isPhone, 16 isAndroid: isAndroid, 17 isPc: isPc 18 }; 19 }(); 20 21 if (os.isAndroid || os.isPhone) { 22 console.log("手机") 23 } else if (os.isTablet) { 24 console.log("平板") 25 } else if(os.isPc) { 26 console.log("电脑") 27 } 28 </script>
1 /** 2 * 获取操作系统类型, 3 * 0 Android 4 * 1 iOS 5 */ 6 function getOSType() { 7 if (/(Android)/i.test(navigator.userAgent)) { 8 return 0; 9 } else if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) { 10 return 1; 11 } else { 12 return 2; 13 } 14 }
1 function is_weixin(){ 2 var ua = navigator.userAgent.toLowerCase(); 3 if(ua.match(/MicroMessenger/i)=="micromessenger") { 4 return true; 5 } else { 6 return false; 7 } 8 }
到这里就可以轻松实现上面的问题,可以在不同端获取浏览器信息,以此来展示不同的页面内容。
当然,不管是在Vue
中还是React
中,都可以轻松拿到。