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

Jekyll中如何获取带哈希锚点的完整页面URL路径?

原因说明

URL中#开头的片段属于浏览器端解析的内容,HTTP请求发送到服务端时会自动丢弃#及后续所有字符。Jekyll是静态站点生成工具,所有页面内容在构建阶段就已经生成完成,构建过程完全无法感知用户最终访问时URL携带的哈希值,因此内置变量{{ page.url }}只会返回页面对应的静态路径,不会包含锚点部分。

实现方法

根据你的使用场景选对应方案即可:

  • 场景1:需要生成指向当前页固定锚点的链接(比如明确要指向#update锚点)
    直接用Liquid语法拼接锚点即可,要得到你需要的/categories/#update格式,模板里写:

    {{ page.url | relative_url }}#update
    

    如果你的站点permalink配置没有自动给路径加末尾斜杠,可以手动补全:

    {{ page.url | relative_url | append: '/' }}#update
    
  • 场景2:需要动态获取用户访问时实际携带的任意哈希值(比如用户可能带不同锚点访问,要实时拿到完整带hash的路径)
    这类动态逻辑无法在Jekyll构建阶段实现,需要通过前端JavaScript在用户浏览器端获取,直接在页面模板里加入如下代码即可:

    <script>
      // 拿到带哈希的完整路径,格式为 /路径/#锚点
      const fullPathWithHash = window.location.pathname + window.location.hash;
      // 后续可以基于这个值做逻辑处理,比如修改页面链接、做锚点高亮等
    </script>
    

注意:静态站点没有服务端动态解析请求的步骤,所有和用户实时访问状态相关的逻辑,都需要放到前端侧执行,不要尝试在Liquid模板层面获取运行时的URL哈希。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 09:36:25