h5移动端判断浏览器类型

获取浏览器信息,处理浏览器信息。
通俗易懂,直接上代码:

function customBrowserVersion(){
    var u = navigator.userAgent;
    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('Adr') > -1, //android终端
        iPhone: u.indexOf('iPhone') > -1 , //是否为iPhone或者QQHD浏览器
        iPad: u.indexOf('iPad') > -1, //是否iPad
        webApp: u.indexOf('Safari') == -1, //是否web应该程序,没有头部与底部
        weixin: u.indexOf('MicroMessenger') > -1, //是否微信 (2015-01-22新增)
        qq: u.match(/\sQQ/i) == " qq", //是否QQ
        isBaidu: u.indexOf('baiduboxapp') !== -1, //是否为百度浏览器
        isqqBrowser: u.indexOf('mqqbrowser') !== -1, //是否为qq浏览器
        isWxBrowser: u.indexOf('micromessenger') !== -1,//是否为微信浏览器
        isUc: u.indexOf('ucbrowser') !== -1,//是否为uc浏览器
    };
}
console.log(customBrowserVersion())

打印出的结果:(需要判断什么就取什么!)

另外附上各个浏览器信息(可扩展):

浏览器ua展示的信息
safari浏览器                            mozilla/5.0 (iphone; cpu iphone os 13_5_1 like mac os x) applewebkit/605.1.15 (khtml, like gecko) version/13.1.1 mobile/15e148 safari/604.1
微信浏览器-安卓mozilla/5.0 (linux; android 10; bkl-al00 build/huaweibkl-al00; wv) applewebkit/537.36 (khtml, like gecko) version/4.0 chrome/77.0.3865.120 mqqbrowser/6.2 tbs/045227 mobile safari/537.36 mmwebid/8185 micromessenger/7.0.17.1720(0x27001137) process/tools wechat/arm64 nettype/wifi language/zh_cn abi/arm64
微信浏览器-iosmozilla/5.0 (iphone; cpu iphone os 13_5_1 like mac os x) applewebkit/605.1.15 (khtml, like gecko) mobile/15e148 micromessenger/7.0.14(0x17000e29) nettype/wifi language/zh_cn
QQ浏览器-安卓mozilla/5.0 (linux; u; android 10; zh-cn; bkl-al00 build/huaweibkl-al00) applewebkit/537.36 (khtml, like gecko) version/4.0 chrome/66.0.3359.126 mqqbrowser/10.6 mobile safari/537.36
QQ浏览器-iosmozilla/5.0 (iphone; cpu iphone os 13_5_1 like mac os x) applewebkit/604.3.5 (khtml, like gecko) version/13.0 mqqbrowser/10.5.3 mobile/15b87 safari/604.1 qbwebviewua/2 qbwebviewtype/1 wktype/1
UC浏览器-安卓mozilla/5.0 (linux; u; android 9; zh-cn; v1816a build/pkq1.180819.001) applewebkit/537.36 (khtml, like gecko) version/4.0 chrome/78.0.3904.108 ucbrowser/13.0.4.1084 mobile safari/537.36
UC浏览器-iosmozilla/5.0 (iphone; cpu iphone os 13_5_1 like mac os x; zh-cn) applewebkit/537.51.1 (khtml, like gecko) mobile/17f80 ucbrowser/13.0.4.1340 mobile aliapp(tunionsdk/0.1.20.3)
vivo自带浏览器mozilla/5.0 (linux; android 9; v1816a build/pkq1.180819.001; wv) applewebkit/537.36 (khtml, like gecko) chrome/62.0.3202.84 mobile safari/537.36 vivobrowser/8.1.14.2
百度-安卓mozilla/5.0 (linux; android 9; v1816a build/pkq1.180819.001; wv) applewebkit/537.36 (khtml, like gecko) version/4.0 chrome/76.0.3809.89 mobile safari/537.36 t7/11.23 sp-engine/2.17.0 flyflow/4.18.0.31 lite baiduboxapp/4.18.0.31 (baidu; p1 9)
百度-iosmozilla/5.0 (iphone; cpu iphone os 13_5_1 like mac os x) applewebkit/605.1.15 (khtml, like gecko) mobile/15e148 sp-engine/2.21.0 main%2f1.0 baiduboxapp/11.25.0.16 (baidu; p2 13.5.1) nabar/1.0
猎豹-安卓mozilla/5.0 (linux; u; android 9; zh-cn; v1816a build/pkq1.180819.001) applewebkit/535.19 (khtml, like gecko) version/4.0 liebaofast/5.21.0 mobile safari/535.19
谷歌-安卓mozilla/5.0 (linux; android 9; v1816a) applewebkit/537.36 (khtml, like gecko) chrome/70.0.3538.110 mobile safari/537.36
谷歌-iosmozilla/5.0 (iphone; cpu iphone os 13_5 like mac os x) applewebkit/605.1.15 (khtml, like gecko) crios/84.0.4147.71 mobile/15e148 safari/604.1
夸克-安卓mozilla/5.0 (linux; u; android 9; zh-cn; v1816a build/pkq1.180819.001) applewebkit/537.36 (khtml, like gecko) version/4.0 chrome/57.0.2987.108 quark/4.2.1.138 mobile safari/537.36
夸克-iosmozilla/5.0 (iphone; cpu iphone os 13_5_1 like mac os x; zh-cn) applewebkit/601.1.46 (khtml, like gecko) mobile/17f80 quark/4.2.2.1053 mobile
欧朋-安卓mozilla/5.0 (linux; u; android 9; zh-cn; v1816a build/pkq1.180819.001) applewebkit/537.36 (khtml, like gecko) version/4.0 opr/12.45.0.1 mobile safari/537.36
欧朋-iosmozilla/5.0 (iphone; cpu iphone os 13_5_1 like mac os x) applewebkit/605.1.15 (khtml, like gecko) mobile/15e148
360-安卓mozilla/5.0 (linux; android 9; v1816a build/pkq1.180819.001; wv) applewebkit/537.36 (khtml, like gecko) version/4.0 chrome/73.0.3683.121 mobile safari/537.36
360-iosmozilla/5.0 (iphone; cpu iphone os 13_5_1 like mac os x) applewebkit/605.1.15 (khtml, like gecko) mobile/15e148
搜狗-iosmozilla/5.0 (iphone; cpu iphone os 13_5_1 like mac os x) applewebkit/605.1.15 (khtml, like gecko) mobile/15e148 sogoumobilebrowser/5.21.8
### 解决UniApp开发H5移动端兼容性问题 为了确保UniApp开发的H5应用在不同移动设备上的良好表现,需考虑多个方面来提升兼容性和用户体验。 #### 处理屏幕方向变化 对于横屏适配这一常见需求,在H5端默认情况下并不支持自动切换至横屏显示。针对此情况,可以通过监听窗口的方向改变事件,并通过CSS强制设置页面布局适应新的屏幕尺寸[^2]: ```javascript window.addEventListener('orientationchange', function() { if (window.orientation === 90 || window.orientation === -90) { document.body.classList.add('landscape'); } else { document.body.classList.remove('landscape'); } }); ``` #### 文件下载功能优化 当涉及到文件下载操作时,由于各品牌手机内置浏览器的行为差异较大,因此需要特别处理以保证最佳体验。可以采用如下策略:先判断当前环境是否为移动端;如果是,则创建隐藏表单提交请求或利用`<a>`标签配合JavaScript触发下载行为[^3]: ```html <a id="downloadLink" style="display:none;"></a> <script type="text/javascript"> function downloadFile(url){ var link = document.getElementById('downloadLink'); link.href = url; link.download = ''; // 设置为空字符串表示跟随服务器响应头中的filename字段 link.click(); } </script> ``` #### 输入框焦点管理 部分iOS版本存在输入法弹出后导致页面布局错乱的问题。对此可采取措施是在失去焦点时重置滚动位置或将整个视口锁定在一个固定的高度范围内防止抖动现象发生[^4]: ```css /* 添加于全局样式 */ body.locked-scroll{ overflow:hidden !important; /* 阻止溢出滚动条 */ } textarea, input[type='text'], input[type='password']{ position:relative; z-index:1; /* 提升层级避免被其他元素遮挡 */ } ``` ```javascript document.querySelectorAll('input, textarea').forEach(function(el){ el.addEventListener('focusin', function(){ document.documentElement.style.overflowY = 'hidden'; setTimeout(() => {document.querySelector('.content-wrapper').style.height = `${window.innerHeight}px`;}, 0); }); el.addEventListener('blur', function(){ document.documentElement.style.overflowY = ''; document.querySelector('.content-wrapper').removeAttribute('style'); }); }); ``` 以上方法能够有效改善基于UniApp构建的应用程序在其目标平台上的一致性和稳定性,从而提供更加流畅稳定的交互效果给最终用户。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值