[js] 有办法在思源导入的 github 的 md 文件中实现内部锚链接跳转吗

本贴最后更新于 209 天前,其中的信息可能已经事过景迁

想把一个 github 的教程 md 导入思源笔记本,但是导入后发现 md 内部链接都不能跳转,不支持 github 的内部跳转语法?

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    26605 引用 • 110771 回帖 • 1 关注
  • 代码片段

    代码片段分为 CSS 与 JS 两种代码,添加在 [设置 - 外观 - 代码片段] 中,这些代码会在思源笔记加载时自动执行,用于改善笔记的样式或功能。

    用户在该标签下分享代码片段时需在帖子标题前添加 [css] [js] 用于区分代码片段类型。

    219 引用 • 1538 回帖
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    10258 引用 • 46623 回帖 • 64 关注
1 操作
wilsons 在 2025-01-09 08:02:56 更新了该帖

相关帖子

被采纳的回答

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • 哪种?

    1 回复
  • simuliya

    就是 github 支持的 md 内部跳转,那个锚点

    github 的 MarkDown 中的标题直接就是一个锚点,比如说你有一个标题是 Update ,对应的 MarkDown 语法长这样:

    ### Update

    那么只需要在要跳的地方像下面这样写就可以,然后点击 “跳转到更新” 这几个字,就能跳到 Update 标题:

    [跳转到更新](#Update) // 如果标题有空格,则应该用 a 标签

    这样子

    1 回复
  • 88250

    不支持锚点链接内部跳转,仅支持跳转到原来的超链接。

  • wuwz1 1 评论

    vditor 配置 lang 为英文不生效是咋回事

    该回帖因偏离主题而被折叠
    1 操作
    88250 在 2025-01-06 19:13:36 折叠了该回帖
    请参考项目 README
    88250
  • muxue via macOS

    这种 github 的跳转是基于前端页面的 id 跳转的,思源内部的 markdown 标题是不带标题本身作为前端 id 的。

    比如我有个文字是

    <span id="jump1">内容</span>

    我就可以用下面的 markdown 语法进行跳转

    [跳转](#jump1)

    github 支持跳转是因为他会将用户的标题作为一个 href 存在某个前端页面语法里面。但是思源里面没有这么做,所以原本的跳转就失效了。

    1 回复
  • wilsons 2

    我猜,思源没这么做的原因,可能是思源有时需要动态加载,#链接对动态加载无效,所以思源就躺平了。

    不过,我用 js 实现了这个功能,原理是第一次点击时会获取这个文档的所有标题映射,然后根据映射 map 找到对应的标题 id,然后再按照思源原有逻辑跳转。

    代码如下

    https://gitee.com/wish163/mysoft/blob/main/%E6%80%9D%E6%BA%90/%E8%AE%A9%E6%80%9D%E6%BA%90%E6%94%AF%E6%8C%81%E9%94%9A%E7%82%B9%E9%93%BE%E6%8E%A5%E8%B7%B3%E8%BD%AC.js

    亦可拿到映射直接修改思源锚点地址,这里选择尽量不改变原有文档策略。

    1 回复
    1 操作
    wilsons 在 2025-01-06 22:04:48 更新了该回帖
  • simuliya

    非常感谢,使用了一下发现有一些锚点可以跳转了,但是有些锚点还是无法跳转,并且无论能否跳转,点击链接都会打开我的文件管理器

    1 回复
  • 那是锚文本不规范导致的,不妨把你的文本发过来看看,并告知哪些锚文本不能跳转。

    或者你可以试试,把锚文本改成和和标题名一摸一样的名字试试。锚文本链接前要加#

    1 回复
  • simuliya

    是的,锚文本不规范,使用#20-行-0x14 技能咏唱 可以正常跳转,但是使用#line20 就无法跳转,只能在 github 实现跳转,并且点击链接不论如何都会打开我的文件管理器

    1 回复
  • 并且点击链接不论如何都会打开我的文件管理器

    这个应该和本代码无关,你思源里的超级链接应该都会打开文件管理器。可能受到其他插件什么影响导致的。

    你可以在新空间测试试试。

    1 回复
  • simuliya 3 评论

    把所有的插件关了也会打开,我的意思就是思源原本就会这样干吧,可以实现链接为#开头的话不打开文件管理器吗

    思源本身#开头链接不会打开文件管理器,是你本地环境问题,你用全新空间试试#开头的会打开吗?如果有问题到官方 github 提 bug
    wilsons
    @wilsons 新建了一个工作空间,随便给一段话上#开头的乱写的链接还是会打开我的文件管理器呀,难道是 bug 吗
    simuliya
    还真是思源 bug, 我在 Windows 系统上重现了,不过我更新了代码,拦截了跳转,你更新下代码再试试。 @simuliya
    wilsons
  • 嗯。。。我觉得这种内部链接是一个相对复杂的问题,涉及到根目录路径、默认首页文件名、使用的绝对路径还是相对路径等问题,不能只处理链接到本文档的链接吧。Markdown 拓展 | VuePress 给的示例就有 5 种,似乎需要更复杂的处理:public/snippet/blockCustomUpdate/preinstalled/vuePress 链接转思源链接.ts · dualwind/siyuan-plugin-block-converter - 码云 - 开源中国

    1 回复
  • simuliya

    哎这个 ts 是干什么的,我把他放进 js 的代码片段没发现有什么区别,思源的代码片段不支持 ts 还是说跟我想的功能不一样

    1 回复
  • 块转换插件的代码,把块内这种错误的链接转为思源的内部链接,不过我还没加到预设里面,回头推一下新版本

请输入回帖内容 ...

推荐标签 标签

  • Mac

    Mac 是苹果公司自 1984 年起以“Macintosh”开始开发的个人消费型计算机,如:iMac、Mac mini、Macbook Air、Macbook Pro、Macbook、Mac Pro 等计算机。

    167 引用 • 597 回帖 • 1 关注
  • Hexo

    Hexo 是一款快速、简洁且高效的博客框架,使用 Node.js 编写。

    22 引用 • 148 回帖 • 17 关注
  • 阿里巴巴

    阿里巴巴网络技术有限公司(简称:阿里巴巴集团)是以曾担任英语教师的马云为首的 18 人,于 1999 年在中国杭州创立,他们相信互联网能够创造公平的竞争环境,让小企业通过创新与科技扩展业务,并在参与国内或全球市场竞争时处于更有利的位置。

    43 引用 • 221 回帖 • 46 关注
  • Sym

    Sym 是一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)系统平台。

    下一代的社区系统,为未来而构建

    524 引用 • 4601 回帖 • 712 关注
  • 阿里云

    阿里云是阿里巴巴集团旗下公司,是全球领先的云计算及人工智能科技公司。提供云服务器、云数据库、云安全等云计算服务,以及大数据、人工智能服务、精准定制基于场景的行业解决方案。

    85 引用 • 324 回帖
  • Thymeleaf

    Thymeleaf 是一款用于渲染 XML/XHTML/HTML5 内容的模板引擎。类似 Velocity、 FreeMarker 等,它也可以轻易的与 Spring 等 Web 框架进行集成作为 Web 应用的模板引擎。与其它模板引擎相比,Thymeleaf 最大的特点是能够直接在浏览器中打开并正确显示模板页面,而不需要启动整个 Web 应用。

    11 引用 • 19 回帖 • 398 关注
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3203 引用 • 8217 回帖 • 1 关注
  • 智能合约

    智能合约(Smart contract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于 1994 年由 Nick Szabo 首次提出。

    1 引用 • 11 回帖 • 1 关注
  • 爬虫

    网络爬虫(Spider、Crawler),是一种按照一定的规则,自动地抓取万维网信息的程序。

    106 引用 • 275 回帖
  • 宕机

    宕机,多指一些网站、游戏、网络应用等服务器一种区别于正常运行的状态,也叫“Down 机”、“当机”或“死机”。宕机状态不仅仅是指服务器“挂掉了”、“死机了”状态,也包括服务器假死、停用、关闭等一些原因而导致出现的不能够正常运行的状态。

    13 引用 • 82 回帖 • 73 关注
  • Log4j

    Log4j 是 Apache 开源的一款使用广泛的 Java 日志组件。

    20 引用 • 18 回帖 • 40 关注
  • CSS

    CSS(Cascading Style Sheet)“层叠样式表”是用于控制网页样式并允许将样式信息与网页内容分离的一种标记性语言。

    199 引用 • 543 回帖
  • 人工智能

    人工智能(Artificial Intelligence)是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门技术科学。

    119 引用 • 323 回帖
  • Jenkins

    Jenkins 是一套开源的持续集成工具。它提供了非常丰富的插件,让构建、部署、自动化集成项目变得简单易用。

    54 引用 • 37 回帖 • 2 关注
  • RabbitMQ

    RabbitMQ 是一个开源的 AMQP 实现,服务器端用 Erlang 语言编写,支持多种语言客户端,如:Python、Ruby、.NET、Java、C、PHP、ActionScript 等。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

    49 引用 • 60 回帖 • 351 关注
  • 新人

    让我们欢迎这对新人。哦,不好意思说错了,让我们欢迎这位新人!
    新手上路,请谨慎驾驶!

    52 引用 • 228 回帖
  • 强迫症

    强迫症(OCD)属于焦虑障碍的一种类型,是一组以强迫思维和强迫行为为主要临床表现的神经精神疾病,其特点为有意识的强迫和反强迫并存,一些毫无意义、甚至违背自己意愿的想法或冲动反反复复侵入患者的日常生活。

    15 引用 • 161 回帖 • 2 关注
  • Flume

    Flume 是一套分布式的、可靠的,可用于有效地收集、聚合和搬运大量日志数据的服务架构。

    9 引用 • 6 回帖 • 663 关注
  • PostgreSQL

    PostgreSQL 是一款功能强大的企业级数据库系统,在 BSD 开源许可证下发布。

    22 引用 • 22 回帖 • 1 关注
  • frp

    frp 是一个可用于内网穿透的高性能的反向代理应用,支持 TCP、UDP、 HTTP 和 HTTPS 协议。

    17 引用 • 7 回帖 • 2 关注
  • golang

    Go 语言是 Google 推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发 Go,是因为过去 10 多年间软件开发的难度令人沮丧。Go 是谷歌 2009 发布的第二款编程语言。

    500 引用 • 1396 回帖 • 255 关注
  • 知乎

    知乎是网络问答社区,连接各行各业的用户。用户分享着彼此的知识、经验和见解,为中文互联网源源不断地提供多种多样的信息。

    10 引用 • 66 回帖
  • Solo

    Solo 是一款小而美的开源博客系统,专为程序员设计。Solo 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!

    1445 引用 • 10083 回帖 • 506 关注
  • 运维

    互联网运维工作,以服务为中心,以稳定、安全、高效为三个基本点,确保公司的互联网业务能够 7×24 小时为用户提供高质量的服务。

    151 引用 • 257 回帖
  • Dubbo

    Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,是 [阿里巴巴] SOA 服务化治理方案的核心框架,每天为 2,000+ 个服务提供 3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。

    60 引用 • 82 回帖 • 618 关注
  • TensorFlow

    TensorFlow 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。

    20 引用 • 19 回帖 • 1 关注
  • 周末

    星期六到星期天晚,实行五天工作制后,指每周的最后两天。再过几年可能就是三天了。

    14 引用 • 297 回帖 • 2 关注