判断客户端是iOS还是Android
在前端开发中,判断客户端是iOS还是Android等移动终端是非常重要的。通过JavaScript可以实现这种判断。下面是相关知识点的总结:
一、判断浏览器类型
在JavaScript中,可以通过两种方法来判断浏览器类型:一种是根据各种浏览器独有的属性来分辨,另一种是通过分析浏览器的userAgent属性来判断。userAgent属性可以提供很多关于浏览器的信息,如浏览器类型、版本号、操作系统等。
二、判断移动终端
要判断是否为移动终端,可以使用正则表达式来匹配navigator.userAgent是否含有字符串AppleWebKit*Mobile。这种方法可以判断是否为移动终端,但不能具体判断是iOS还是Android。
三、判断iOS还是Android
可以通过分析userAgent属性来判断是iOS还是Android。例如,可以使用以下代码来判断:
```
var ua = navigator.userAgent;
if (ua.indexOf('iPhone') > -1) {
// 是 iPhone
} else if (ua.indexOf('iPad') > -1) {
// 是 iPad
} else if (ua.indexOf('Android') > -1) {
// 是 Android
}
```
四、浏览器语言版本的判断
可以使用navigator.browserLanguage或navigator.language来判断浏览器语言版本。例如:
```
var language = (navigator.browserLanguage || navigator.language).toLowerCase();
```
五、完整的判断代码
下面是一个完整的判断代码,包括判断移动终端、iOS还是Android、浏览器语言版本等:
```
<script type="text/javascript">
var browser = {
versions: function() {
var u = navigator.userAgent, app = navigator.appVersion;
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('Linux') > -1, // android 终端或 uc 浏览器
iPhone: u.indexOf('iPhone') > -1, // 是否为 iPhone 或者 QQHD 浏览器
iPad: u.indexOf('iPad') > -1, // 是否 iPad
webApp: u.indexOf('Safari') == -1 // 是否 web 应用程序,没有头部与底部
}
}(),
language: (navigator.browserLanguage || navigator.language).toLowerCase()
}
document.writeln("语言版本: " + browser.language);
document.writeln(" 是否为移动终端: " + browser.versions.mobile);
document.writeln(" ios 终端: " + browser.versions.ios);
document.writeln(" android 终端: " + browser.versions.android);
document.writeln(" 是否为 iPhone: " + browser.versions.iPhone);
document.writeln(" 是否 iPad: " + browser.versions.iPad);
document.writeln(navigator.userAgent);
</script>
```
六、注意事项
在判断客户端时,需要注意一些特殊情况,如UC浏览器没有安卓报头,只返回linux,这时可以根据linux来判断是安卓(前提必须满足是移动终端,UC这点是满足的)。安卓QQ浏览器HD版检测的结果是:mac,Safari。