如何在JavaScript中实现含/pages/路径的移动端URL跳转功能
URL跳转规则修正方案
原代码存在的问题
- 路径判断逻辑错误:
url = "pages"是赋值操作,不是判断逻辑,同时没有正确获取当前页面的路径信息,无法识别/pages/路径 - 跳转前缀错误:需求要求跳转前缀为
/a/b/,原代码写为/a/s,路径不匹配 - 移动端判断逻辑不够严谨:仅通过屏幕宽度判断移动端,部分平板、横屏手机场景可能识别出错
修正后的完整代码
<script type="text/javascript"> // 移动端判断:结合屏幕宽度+用户代理标识,覆盖更多场景 const isMobile = screen.width <= 699 || /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent); // 路径判断:确认当前路径包含/pages/且还未跳转到目标前缀下,避免无限重定向 const needRedirect = window.location.pathname.includes('/pages/') && !window.location.pathname.startsWith('/a/b/'); if (isMobile && needRedirect) { // 拼接目标路径,保留原完整pathname window.location.href = '/a/b' + window.location.pathname; } </script>
额外说明
- 如果你的跳转前缀不是固定的
/a/b,可以自行替换代码中拼接的前缀内容 - 若不需要兼容特殊设备的移动端判断,可以删掉UA判断的部分,仅保留
screen.width <= 699即可
内容的提问来源于stack exchange,提问作者Ariel Artiaga
相关产品推荐
相关产品推荐

