javascript无线端的判断
经常在工作中要求网页做这样的处理判断:针对无线端的网页,我们需要兼容一种异于PC端的网页效果。
如下代码就可以实现无线端的判断:
var mobs = ['android', 'ipad', 'ipod', 'phone', 'mobile', 'mobi'],
isMob;
for (var i = 0; i < mobs.length; i++ ) {
if (navigator.userAgent.toLowerCase().indexOf(mobs[i]) > -1 ) {
isMob = true;
break;
}
}
if (isMob) {//无线端
……
}
进一步优化代码:
// 是否苹果设备
var isApple = ['iphone', 'ipad'].some(function(keyword) {
return userAgent.indexOf(keyword) !== -1;
});
// 是否移动设备
var isMobileDevice = isApple ||
['phone', 'ipad', 'android', 'mobile', 'mobi'].some(function(keyword) {
return userAgent.indexOf(keyword) !== -1;
});
// 是否PC的IE浏览器
var isIE;
if (!isMobileDevice) {
isIE = userAgent.indexOf('msie') !== -1 || userAgent.indexOf('trident') !== -1;
}
注意到javascript数组方法some()的使用:
语法
var someElementPassed = array.some(callback[, thisObject]);
参数说明
callback: 要对每个数组元素执行的回调函数。
thisObject : 在执行回调函数时定义的this对象。
功能说明
对数组中的每个元素都执行一次指定的函数(callback),直到此函数返回 true,如果发现这个元素,some 将返回 true,如果回调函数对每个元素执行后都返回 false ,some 将返回 false。它只对数组中的非空元素执行指定的函数,没有赋值或者已经删除的元素将被忽略。
回调函数可以有三个参数:当前元素,当前元素的索引和当前的数组对象。
如参数 thisObject 被传递进来,它将被当做回调函数(callback)内部的 this 对象,如果没有传递或者为null,那么将会使用全局对象。
some 不会改变原有数组,记住:只有在回调函数执行前传入的数组元素才有效,在回调函数开始执行后才添加的元素将被忽略,而在回调函数开始执行到最后一个元素这一期间,数组元素被删除或者被更改的,将以回调函数访问到该元素的时间为准,被删除的元素将被忽略。
最新文章
- 461. Hamming Distance and 477. Total Hamming Distance in Python
- Visual Studio跨平台开发Xamarin
- 关于a和b不用第三变量交换值的问题
- C# 获取地址栏的地址(URL)
- eclipse(Version: Neon Release (4.6.0))安装hibernate tools
- B/S一些小知识及常用控件
- Android OTG支持USB读卡器
- 高效jQuery
- net core VS goang web
- 十二周项目三(4)——出口fibnacci第一序列20的数量
- Facebook 网页应用图文设置教程
- CYQ.data 框架结构
- java异常常见面试问题
- 2017-12-19python全栈9期第四天第三节之iterable可迭代对象join之字符串和列表转换成字符串和range
- 使用jdom进行xml解析,网络抓包
- mysql 5.7配置项最详细的解释
- NFS 配置文件
- ZC_C++类函数指针_模拟_Delphi类函数指针
- zabbix监控多实例tomcat--不使用JMX
- malloc、calloc和realloc比较