[js] 求助 js 代码,左键展开文档树,中键打开文档

本贴最后更新于 194 天前,其中的信息可能已经水流花落

思源假子文件夹插件 视频教程 - 链滴

一个小建议:能否在打开页面的同时,自动展开该页面的子页面 - 链滴

点击展开文档树 - 链滴

可以通过 JS 代码实现鼠标中键展开文档吗? - 链滴

基于以上帖子及下面的“中键展开文档树”的代码,哪位大佬能帮忙写一个 js 代码,实现以下功能:

如果当前文档下面含有子文档:

  1. 鼠标左键文档树条目,展开文档树(显示该文档下的子文档),不打开文档
  2. 鼠标中键文档树条目,不展开文档树,打开文档(原左键的默认功能)

先感谢 @zxkmm,@Undii,@wilsons 等大佬的相关插件、代码和热心帮助!

// 中键展开文档树:基于https://ld246.com/article/1682476267736 (function(){ let g_reset = setInterval(main, 2000); function main() { if (document.querySelector('.sy__file')) { clearInterval(g_reset); }else{ return false; } document.querySelector('.sy__file').addEventListener('mousedown', event => { if (event.button != 1) return; let notTitleFlag = false; if (!event.target.classList.contains('b3-list-item__text')) notTitleFlag = true; let target = event.target.parentNode; let temp = event.target; //console.log("0426",event); for (let i = 0; i < 4 && temp; i++) { if (temp?.getAttribute("data-type") == "navigation-file" || temp?.getAttribute("data-type") == "navigation-root") { target = temp; break; } temp = temp?.parentNode; } //console.log("0426target", target); if (target?.getAttribute("data-type") == "navigation-file" || target?.getAttribute("data-type") == "navigation-root") { const b3ListItemToggle = target.querySelector('.b3-list-item__toggle'); const title = target.querySelector('.b3-list-item__text'); if (b3ListItemToggle.classList.contains('fn__hidden')) return; event.preventDefault(); b3ListItemToggle.click(); if (event.ctrlKey) { title.click(); } } }, true); } })();
  • 思源笔记

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

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

    26512 引用 • 110275 回帖 • 1 关注
  • 代码片段

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

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

    208 引用 • 1469 回帖 • 1 关注
  • Q&A

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

    10209 引用 • 46392 回帖 • 64 关注
4 操作
wilsons 在 2025-01-13 09:04:54 更新了该帖
wenbocn 在 2025-01-12 23:03:59 更新了该帖
wenbocn 在 2025-01-09 15:21:16 更新了该帖
wenbocn 在 2025-01-09 15:04:16 更新了该帖

相关帖子

被采纳的回答
优质回帖

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • 我 Mac 3.1.10 和 Windows 3.1.14 都没问题,我等下升级下试试。

    要确保文件夹是是空的,不能有任何非空字符

    image.png

    1 回复
  • 其他回帖
  • wenbocn 2 评论

    大佬,下面前 2 张图片是本 js 失效情况下的报错(点击条目不展开),第三张图是刷新后本 js 能够正确使用时的内容,您看一下,看能否改进一下,避免偶尔出现的失效问题,谢谢!@wilsons

    image.png

    image.png

    image.png

    我没碰到过失效情况,是否受你本地代码影响导致的?如果能稳定重现,不如说说重新步骤,这个报错并不是这个代码的报错,而是思源自身代码的报错,如果你能看到报错信息的来源最好看下报错信息的发起者,你提供的报错信息不够或和本代码无关,无法判断问题原因。
    wilsons
    @wilsons 不能稳定复现,也不常出现。两台电脑都可能会偶尔出现这个问题
    wenbocn
  • wenbocn 4 评论

    发现一个小技巧,使用下面的 css,使文档树条目前图标点击无效(不弹出修改图标的选项),配合本帖 @wilsons 大佬的 js,可实现左键点击文档树条目前图标打开文档,点击条目文字内容展开文档树的功能。

    /* 条目前图标点击无效 */ .b3-list-item__icon { pointer-events: none !important; }
    👍 我当时注意到了这个图标问题,由于不通用就没加,有些人还是需要点击修改图标的。手机版由于图标不能更改,就加了同文本点击同样的功能。
    wilsons
    @wilsons 👍👍 很专业,你能想的很周到,赞!
    wenbocn
    @wenbocn 其实还有一点忽略的地方,目前的方式不支持动态创建的笔记本及从关闭恢复的笔记,必须刷新下页面才行,按理说应该监控笔记创建等,但这种场景不多,且刷新下就解决了,增加监控带来复杂度就没加,其实链滴很多代码都会有这些问题,所以有时刷新是解决问题的万能办法。😄
    wilsons
    @wilsons OK,收到,已经很好了。很实用。
    wenbocn
  • wenbocn 1 赞同

    image.png

    image.png

    会不会是文件夹图标的问题,我现在文档树中显示的是蓝色图标

    使用这个插件后,图标有黄色变为了蓝色

    image.png

  • 查看全部回帖

推荐标签 标签

  • 友情链接

    确认过眼神后的灵魂连接,站在链在!

    24 引用 • 373 回帖
  • GitHub

    GitHub 于 2008 年上线,目前,除了 Git 代码仓库托管及基本的 Web 管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。正因为这些功能所提供的便利,又经过长期的积累,GitHub 的用户活跃度很高,在开源世界里享有深远的声望,并形成了社交化编程文化(Social Coding)。

    209 引用 • 2040 回帖
  • HBase

    HBase 是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的 Google 论文 “Bigtable:一个结构化数据的分布式存储系统”。就像 Bigtable 利用了 Google 文件系统所提供的分布式数据存储一样,HBase 在 Hadoop 之上提供了类似于 Bigtable 的能力。

    17 引用 • 6 回帖 • 70 关注
  • QQ

    1999 年 2 月腾讯正式推出“腾讯 QQ”,在线用户由 1999 年的 2 人(马化腾和张志东)到现在已经发展到上亿用户了,在线人数超过一亿,是目前使用最广泛的聊天软件之一。

    45 引用 • 557 回帖
  • Thymeleaf

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

    11 引用 • 19 回帖 • 399 关注
  • OneDrive
    2 引用
  • sts
    2 引用 • 2 回帖 • 247 关注
  • Bug

    Bug 本意是指臭虫、缺陷、损坏、犯贫、窃听器、小虫等。现在人们把在程序中一些缺陷或问题统称为 bug(漏洞)。

    76 引用 • 1742 回帖 • 2 关注
  • jsDelivr

    jsDelivr 是一个开源的 CDN 服务,可为 npm 包、GitHub 仓库提供免费、快速并且可靠的全球 CDN 加速服务。

    5 引用 • 31 回帖 • 109 关注
  • RIP

    愿逝者安息!

    8 引用 • 92 回帖 • 407 关注
  • 阿里云

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

    85 引用 • 324 回帖
  • AngularJS

    AngularJS 诞生于 2009 年,由 Misko Hevery 等人创建,后为 Google 所收购。是一款优秀的前端 JS 框架,已经被用于 Google 的多款产品当中。AngularJS 有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、语义化标签、依赖注入等。2.0 版本后已经改名为 Angular。

    12 引用 • 50 回帖 • 516 关注
  • Follow
    4 引用 • 12 回帖 • 8 关注
  • OnlyOffice
    4 引用 • 19 关注
  • Flume

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

    9 引用 • 6 回帖 • 664 关注
  • SVN

    SVN 是 Subversion 的简称,是一个开放源代码的版本控制系统,相较于 RCS、CVS,它采用了分支管理系统,它的设计目标就是取代 CVS。

    29 引用 • 98 回帖 • 697 关注
  • 机器学习

    机器学习(Machine Learning)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。

    77 引用 • 37 回帖
  • GAE

    Google App Engine(GAE)是 Google 管理的数据中心中用于 WEB 应用程序的开发和托管的平台。2008 年 4 月 发布第一个测试版本。目前支持 Python、Java 和 Go 开发部署。全球已有数十万的开发者在其上开发了众多的应用。

    14 引用 • 42 回帖 • 825 关注
  • SendCloud

    SendCloud 由搜狐武汉研发中心孵化的项目,是致力于为开发者提供高质量的触发邮件服务的云端邮件发送平台,为开发者提供便利的 API 接口来调用服务,让邮件准确迅速到达用户收件箱并获得强大的追踪数据。

    2 引用 • 8 回帖 • 507 关注
  • 旅游

    希望你我能在旅途中找到人生的下一站。

    100 引用 • 905 回帖
  • jQuery

    jQuery 是一套跨浏览器的 JavaScript 库,强化 HTML 与 JavaScript 之间的操作。由 John Resig 在 2006 年 1 月的 BarCamp NYC 上释出第一个版本。全球约有 28% 的网站使用 jQuery,是非常受欢迎的 JavaScript 库。

    63 引用 • 134 回帖 • 737 关注
  • 锤子科技

    锤子科技(Smartisan)成立于 2012 年 5 月,是一家制造移动互联网终端设备的公司,公司的使命是用完美主义的工匠精神,打造用户体验一流的数码消费类产品(智能手机为主),改善人们的生活质量。

    4 引用 • 31 回帖
  • SEO

    发布对别人有帮助的原创内容是最好的 SEO 方式。

    36 引用 • 200 回帖 • 40 关注
  • 国际化

    i18n(其来源是英文单词 internationalization 的首末字符 i 和 n,18 为中间的字符数)是“国际化”的简称。对程序来说,国际化是指在不修改代码的情况下,能根据不同语言及地区显示相应的界面。

    8 引用 • 26 回帖
  • Gzip

    gzip (GNU zip)是 GNU 自由软件的文件压缩程序。我们在 Linux 中经常会用到后缀为 .gz 的文件,它们就是 Gzip 格式的。现今已经成为互联网上使用非常普遍的一种数据压缩格式,或者说一种文件格式。

    9 引用 • 12 回帖 • 184 关注
  • JavaScript

    JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。

    730 引用 • 1284 回帖
  • Access
    1 引用 • 3 回帖 • 3 关注