You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

导航栏激活链接颜色修改:双路径映射时根路径无法匹配激活样式如何解决

问题根因

现有JS的匹配逻辑是当前路径前缀等于导航链接的href才会加激活类。当访问路径为/时,导航链接的href是/start,/的长度远小于/start,取前缀匹配的结果不相等,因此无法触发激活样式。

推荐解决方案

不需要新增两个导航链接,该方案会导致界面出现重复入口,用户体验极差,不建议采用。优先选择以下两种方案:

方案1:修改JS匹配逻辑(无页面跳转,改造成本最低)

在匹配前先对根路径做特殊处理,把/和/start都匹配到START导航项,修改后的代码如下:

function markActiveMenuItem() {
  var path = window.location.pathname;
  if (path != "/building" && !path.startsWith("/watch")) {
    // 新增根路径特殊匹配逻辑
    if (path === '/') {
      $('.nav-link[href="/start"]').addClass("active");
    } else {
      // 原有逻辑完全保留
      $(".nav-link").each(function () {
        var href = $(this).attr("href");
        if (path.substring(0, href.length) === href) {
          $(this).addClass("active");
        }
      });
      $(".dropdown-item").each(function () {
        var href = $(this).attr("href");
        if (path.substring(0, href.length) === href) {
          $(this).closest(".nav-item").children("a").addClass("active");
        }
      });
    }
  }
}

方案2:配置根路径重定向(更规范,对SEO友好)

不需要修改前端代码,直接在后端把/的请求重定向到/start,既保证同一页面只有一个URL,也能让原来的JS逻辑正常生效。修改后端代码如下:

// 新增根路径重定向接口
@GetMapping("/")
public String rootRedirect() {
    return "redirect:/start";
}

// 原有接口仅保留/start路径映射
@GetMapping("/start")
public String home(Model model) {
    return "templates/home";
}

内容的提问来源于stack exchange,提问作者HappyProgrammer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 06:12:01