文档树能否加个配置项,点击文档同时打开下一级,每次都需要点左边的小按钮很麻烦

  • 思源笔记

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

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

    24830 引用 • 102143 回帖

相关帖子

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • 可以用多层笔记本插件的自动模式

  • 其他回帖
  • EmberSky

    单击就展开的体验极其不好, 你可能想要的是双击展开

    // ### [js片段] 双击节点展开/折叠 (DOUBLE_SWITCH 控制) (() => { /***************************自主配置begin**************************************/ // 修改配置后, 需要刷新页面(设置->快捷键->刷新), 否则会有问题 const CONFIG = { DOUBLE_SWITCH : true, // 是否启用双击展开/折叠 DOUBLE_INTERVAL: 300, // 双击最大间隔时间 毫秒 }; /***************************自主配置end****************************************/ // 生成唯一ID用于日志标识 const SESSION_ID = Date.now(); // 点击类型枚举 const CLICK_TYPE = { INVALID: 0, // 无效的点击 NODE : 1, // 点击节点 ARROW : 2, // 点击折叠按钮 BOOK : 3, // 点击笔记本 }; // 工具函数 const utils = { log(...args) { const now = new Date(); const hours = String(now.getHours()).padStart(2, '0'); // 获取小时并补零 const minutes = String(now.getMinutes()).padStart(2, '0'); // 获取分钟并补零 const seconds = String(now.getSeconds()).padStart(2, '0'); // 获取秒数并补零 const milliseconds = String(now.getMilliseconds()).padStart(3, '0'); // 获取毫秒并补零 const timeString = `${hours}:${minutes}:${seconds}.${milliseconds}`; // 形成 hh:mm:ss.SSS 格式 console.log(`[${SESSION_ID}] [${timeString}]:`, ...args); }, getTagName(element) { return element?.tagName?.toLowerCase() || ''; } }; // 树节点处理类 class TreeHandler { constructor() { this.lastClickTime = 0; // 上次点击时间 } // 获取当前元素对应的种类 getClickType(element) { if (!element) return CLICK_TYPE.INVALID; let target = element; let tagName = utils.getTagName(target); // 处理SVG元素 if (tagName === 'use') { target = element.parentElement.parentElement; } else if (tagName === 'svg') { target = element.parentElement; } tagName = utils.getTagName(target); if (tagName === 'ul') { return CLICK_TYPE.INVALID; } else if (tagName === 'li' && target.getAttribute('data-path') === '/') { return CLICK_TYPE.BOOK; } else if (tagName === 'li') { return CLICK_TYPE.NODE; } else if (tagName === 'span') { if (target.classList.contains('b3-list-item__toggle')) { return CLICK_TYPE.ARROW; } else if (target.classList.contains('b3-list-item__text') && target.parentElement.getAttribute('data-path') === '/') { return CLICK_TYPE.BOOK; } else if (target.classList.contains('b3-list-item__text')) { return CLICK_TYPE.NODE; } } return CLICK_TYPE.INVALID; } // 点击节点对应的折叠按钮, 前提: element必须是点击的节点 clickArrowButton(element) { const li = utils.getTagName(element) === 'span' ? element.parentElement : element; if (utils.getTagName(li) !== 'li') return; li.querySelector('span.b3-list-item__toggle:not(.fn__hidden)')?.click(); } // 处理鼠标点击事件 handleClickEvent(event) { const element = event.target; const clickType = this.getClickType(element); // 处理双击, 系统自带的双击监测事件, 有点问题, 所以自己实现一个 const currentTime = Date.now(); utils.log("点击了", (currentTime-this.lastClickTime), clickType, element); if (CONFIG.DOUBLE_SWITCH && currentTime - this.lastClickTime < CONFIG.DOUBLE_INTERVAL && clickType === CLICK_TYPE.NODE) { utils.log("双击展开/折叠触发"); this.clickArrowButton(element); } this.lastClickTime = currentTime; } } // 初始化并监听点击事件 let initInterval = setInterval(() => { const treeContainer = document.querySelector('.sy__file>.fn__flex-1'); if (treeContainer) { clearInterval(initInterval); const handler = new TreeHandler(); treeContainer.addEventListener('click', e => handler.handleClickEvent(e), true); } }, 200); })();
    1 回复
  • sisisi 1 评论

    的确单击就展开是存在体验不好的时候,我觉得更好的方式是和 Trilium 一样,将子文档的预览放在当前文档的底部,图示中选中社会科学类后就能浏览该文档下的子文档大概情况,同时可以直接进入 2 级子文档,如这里的认知科学。而不需要展开社会科学类-> 展开心理学-> 点击认知科学。

    image.png

  • auric 3 评论

    集市有个插件:双击文档树,应该是差不多的。

    我知道那个, 但是他好像有 bug(小声), 我就自己写了一个
    EmberSky
    我以前用这个插件发现会有卡死整个界面的问题
    JeffreyChen
    哈哈,我倒没有遇到过,平时用文档树的时间比较少
    auric

推荐标签 标签

  • Webswing

    Webswing 是一个能将任何 Swing 应用通过纯 HTML5 运行在浏览器中的 Web 服务器,详细介绍请看 将 Java Swing 应用变成 Web 应用

    1 引用 • 15 回帖 • 640 关注
  • ZooKeeper

    ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 HBase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

    59 引用 • 29 回帖 • 3 关注
  • jQuery

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

    63 引用 • 134 回帖 • 734 关注
  • 资讯

    资讯是用户因为及时地获得它并利用它而能够在相对短的时间内给自己带来价值的信息,资讯有时效性和地域性。

    56 引用 • 85 回帖
  • Laravel

    Laravel 是一套简洁、优雅的 PHP Web 开发框架。它采用 MVC 设计,是一款崇尚开发效率的全栈框架。

    20 引用 • 23 回帖 • 739 关注
  • CloudFoundry

    Cloud Foundry 是 VMware 推出的业界第一个开源 PaaS 云平台,它支持多种框架、语言、运行时环境、云平台及应用服务,使开发人员能够在几秒钟内进行应用程序的部署和扩展,无需担心任何基础架构的问题。

    5 引用 • 18 回帖 • 178 关注
  • 学习

    “梦想从学习开始,事业从实践起步” —— 习近平

    172 引用 • 516 回帖
  • 服务器

    服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。

    125 引用 • 585 回帖
  • iOS

    iOS 是由苹果公司开发的移动操作系统,最早于 2007 年 1 月 9 日的 Macworld 大会上公布这个系统,最初是设计给 iPhone 使用的,后来陆续套用到 iPod touch、iPad 以及 Apple TV 等产品上。iOS 与苹果的 Mac OS X 操作系统一样,属于类 Unix 的商业操作系统。

    87 引用 • 139 回帖
  • OAuth

    OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是 oAuth 的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此 oAuth 是安全的。oAuth 是 Open Authorization 的简写。

    36 引用 • 103 回帖 • 28 关注
  • 七牛云

    七牛云是国内领先的企业级公有云服务商,致力于打造以数据为核心的场景化 PaaS 服务。围绕富媒体场景,七牛先后推出了对象存储,融合 CDN 加速,数据通用处理,内容反垃圾服务,以及直播云服务等。

    28 引用 • 226 回帖 • 135 关注
  • 一些有用的避坑指南。

    69 引用 • 93 回帖
  • Mac

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

    167 引用 • 595 回帖
  • MyBatis

    MyBatis 本是 Apache 软件基金会 的一个开源项目 iBatis,2010 年这个项目由 Apache 软件基金会迁移到了 google code,并且改名为 MyBatis ,2013 年 11 月再次迁移到了 GitHub。

    173 引用 • 414 回帖 • 369 关注
  • Hprose

    Hprose 是一款先进的轻量级、跨语言、跨平台、无侵入式、高性能动态远程对象调用引擎库。它不仅简单易用,而且功能强大。你无需专门学习,只需看上几眼,就能用它轻松构建分布式应用系统。

    9 引用 • 17 回帖 • 618 关注
  • Ant-Design

    Ant Design 是服务于企业级产品的设计体系,基于确定和自然的设计价值观上的模块化解决方案,让设计者和开发者专注于更好的用户体验。

    17 引用 • 23 回帖
  • 区块链

    区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法 。

    92 引用 • 752 回帖 • 2 关注
  • Google

    Google(Google Inc.,NASDAQ:GOOG)是一家美国上市公司(公有股份公司),于 1998 年 9 月 7 日以私有股份公司的形式创立,设计并管理一个互联网搜索引擎。Google 公司的总部称作“Googleplex”,它位于加利福尼亚山景城。Google 目前被公认为是全球规模最大的搜索引擎,它提供了简单易用的免费服务。不作恶(Don't be evil)是谷歌公司的一项非正式的公司口号。

    49 引用 • 192 回帖
  • IPFS

    IPFS(InterPlanetary File System,星际文件系统)是永久的、去中心化保存和共享文件的方法,这是一种内容可寻址、版本化、点对点超媒体的分布式协议。请浏览 IPFS 入门笔记了解更多细节。

    21 引用 • 245 回帖 • 231 关注
  • JVM

    JVM(Java Virtual Machine)Java 虚拟机是一个微型操作系统,有自己的硬件构架体系,还有相应的指令系统。能够识别 Java 独特的 .class 文件(字节码),能够将这些文件中的信息读取出来,使得 Java 程序只需要生成 Java 虚拟机上的字节码后就能在不同操作系统平台上进行运行。

    180 引用 • 120 回帖 • 1 关注
  • Telegram

    Telegram 是一个非盈利性、基于云端的即时消息服务。它提供了支持各大操作系统平台的开源的客户端,也提供了很多强大的 APIs 给开发者创建自己的客户端和机器人。

    5 引用 • 35 回帖 • 1 关注
  • 招聘

    哪里都缺人,哪里都不缺人。

    189 引用 • 1057 回帖
  • 新人

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

    52 引用 • 228 回帖
  • Dubbo

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

    60 引用 • 82 回帖 • 610 关注
  • V2Ray
    1 引用 • 15 回帖 • 1 关注
  • SendCloud

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

    2 引用 • 8 回帖 • 489 关注
  • AWS
    11 引用 • 28 回帖 • 10 关注