本文介绍如何使用JavaScript通过navigator.userAgent判断访问设备类型。代码逻辑首先识别是否为移动端环境,随后根据Android、iPhone、iPad或其他移动设备分别加载对应的CSS样式文件。该方法通过setActiveStyleSheet函数动态插入link标签,实现不同设备下的样式切换,适用于需要区分移动端具体设备类型的Web项目。
代码示例结束,可复制上述代码使用。
JavaScript检测移动设备并加载CSS的代码实现
具体实现代码如下所示:
首先定义逻辑以判断当前浏览器是否处于移动端运行环境中。
通过正则表达式匹配navigator.userAgent,检测是否包含AppleWebKit及Mobile标识,或者匹配常见移动设备品牌关键词(如MIDP、SymbianOS、NOKIA、SAMSUNG、LG、NEC、TCL、Alcatel、BIRD、DBTEL、Dopod、PHILIPS、HAIER、LENOVO、MOT-、Nokia、SonyEricsson、SIE-、Amoi、ZTE等)。
if(window.location.href.indexOf("?mobile")<0){
使用try-catch块包裹核心逻辑,以捕获并忽略可能发生的异常。
在try块内部,再次通过正则表达式检测navigator.userAgent,判断设备具体类型是否为Android、webOS、iPhone、iPod或BlackBerry。
若设备类型匹配上述列表,则判定为通用移动设备,并调用样式加载函数。
调用setActiveStyleSheet函数,传入参数"style_mobile_a.css"以加载对应的CSS文件。
}
若未匹配Android等通用类型,则继续判断是否匹配iPad。
若检测到iPad设备,则执行相应的样式加载逻辑。
调用setActiveStyleSheet函数,传入参数"style_mobile_iPad.css"以加载iPad专用CSS文件。
}
若既非通用移动设备也非iPad,则进入其他移动设备的处理分支。
对于其他未明确列出的移动设备,执行默认的移动设备样式加载逻辑。
调用setActiveStyleSheet函数,传入参数"style_mobile_other.css"以加载其他移动设备CSS文件。
}
}
结束try-catch块的异常处理,并关闭移动端环境判断的大括号。
}
}
若初始判断未命中任何移动端特征(即非移动端环境),则进入else分支。
针对非移动端设备,执行默认的样式加载逻辑。
调用setActiveStyleSheet函数,传入参数"style_mobile_no.css"以加载非移动端CSS文件。
}
定义样式加载函数,用于在判断完成后动态插入样式表链接。
定义setActiveStyleSheet函数,该函数接收文件名参数,并通过document.write方法向文档中写入link标签,属性包含href为传入的文件名及rel="stylesheet",从而完成CSS文件的动态加载。