本文介绍在无法使用响应式布局且需部署独立PC与手机代码时,通过JavaScript自动识别设备并跳转对应页面的方案。核心逻辑基于navigator.userAgent判断终端类型,区分iPad、iPhone、Android等设备,分别指向不同的URL。同时提供了获取项目根路径和全路径的辅助函数,确保跳转地址的准确性,适用于需要功能精简或独立部署的移动场景。
代码应用场景与需求背景
代码应用场景

在项目开发中,通常采用响应式布局或Bootstrap等框架来构建自适应网站。然而,根据具体业务需求,移动端的功能往往需要进行精简。为此,开发者可能会编写两套独立的代码,分别服务于PC端和手机端。这就带来了一个部署问题:项目通常只使用单一地址进行部署,而不会针对PC和手机端的代码分别部署。为了解决这一问题,需要通过识别视口分辨率或设备类型,实现自动跳转到对应版本的代码页面。
实现方法概述
实现方法概述
目前网络上存在多种实现PC与手机端代码跳转的方法,本文仅介绍其中一种经过验证的实现方式。其他方法尚未尝试,期待与读者交流更多解决方案。在此特别感谢“老蒋部落”提供的方法,对本文的实现给予了重要帮助。
核心JS代码示例与配置
核心JS代码示例
<script type="text/javascript">
function mobilePcRedirect() {
var sUserAgent= navigator.userAgent.toLowerCase();
var bIsIpad= sUserAgent.match(/ipad/i) == "ipad";
var bIsIphoneOs= sUserAgent.match(/iphone os/i) == "iphone os";
var bIsMidp= sUserAgent.match(/midp/i) == "midp";
var bIsUc7= sUserAgent.match(/rv:1.2.3.4/i) == "rv:1.2.3.4";
var bIsUc= sUserAgent.match(/ucweb/i) == "ucweb";
var bIsAndroid= sUserAgent.match(/android/i) == "android";
var bIsCE= sUserAgent.match(/windows ce/i) == "windows ce";
var bIsWM= sUserAgent.match(/windows mobile/i) == "windows mobile";
if (bIsIpad || bIsIphoneOs || bIsMidp || bIsUc7 || bIsUc || bIsAndroid || bIsCE || bIsWM) {
window.location.href= '手机端跳转页面URL';
} else {
window.location= 'PC端跳转页面URL';
}
};
mobilePcRedirect();
</script>
将上述方法写入手机端和PC端共用的Common.js文件中,并在相应位置配置对应的跳转路径即可生效。
例如,在手机端公共JS中的代码配置如下
// 实现网站自动跳转电脑PC端与手机端不同页面
function mobilePcRedirect() {
var sUserAgent= navigator.userAgent.toLowerCase();
var bIsIpad= sUserAgent.match(/ipad/i) == "ipad";
var bIsIphoneOs= sUserAgent.match(/iphone os/i) == "iphone os";
var bIsMidp= sUserAgent.match(/midp/i) == "midp";
var bIsUc7= sUserAgent.match(/rv:1.2.3.4/i) == "rv:1.2.3.4";
var bIsUc= sUserAgent.match(/ucweb/i) == "ucweb";
var bIsAndroid= sUserAgent.match(/android/i) == "android";
var bIsCE= sUserAgent.match(/windows ce/i) == "windows ce";
var bIsWM= sUserAgent.match(/windows mobile/i) == "windows mobile";
if (bIsIpad || bIsIphoneOs || bIsMidp || bIsUc7 || bIsUc || bIsAndroid || bIsCE || bIsWM) {
console.log("手机端跳转页面URL");
} else {
console.log("PC端跳转页面URL");
// 注:此时写入的是PC端首页跳转路径
window.location.href = getBasePath() + "/education/new_index.html";
}
};
mobilePcRedirect();

反之,在PC端公共JS中采用相同的逻辑结构,只需调整跳转的目标URL即可。
拓展内容:如何获取项目根路径
拓展内容:如何获取项目根路径
获取项目名称的方法
/**
* 获取项目名称 如:/video_learning
**/
function getProjectName() {
var strPath = window.document.location.pathname;
var postPath = strPath.substring(0,strPath.substr(1).indexOf('/')+1);
return postPath;
}
获取项目完整路径的方法
/**
* 获取项目全路径 如:http://localhost:8080/video_learning
* */
function getBasePath(){
//获取当前网址
var curWwwPath=window.document.location.href;
//获取主机地址之后的目录
var pathName=window.document.location.pathname;
var pos=curWwwPath.indexOf(pathName);
//获取地址到端口号
var localhostPath=curWwwPath.substring(0,pos);
//项目名
var projectName=pathName.substring(0,pathName.substr(1).indexOf('/')+1);
return (localhostPath+projectName);
}
本次分享到此结束,如果大家有更好的方法或建议,欢迎指正与交流。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。