JS实现PC与移动端自动识别跳转的代码方案

作者:代码拾荒时间:2026-10-23 14:20:56浏览:151

本文介绍在无法使用响应式布局且需部署独立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);
}

本次分享到此结束,如果大家有更好的方法或建议,欢迎指正与交流。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

作者最新文章