飞书文档一级目录折叠助手(优化版)
飞书文档一级目录智能折叠助手,页面加载后自动折叠所有一级目录,适配SPA动态加载/异步渲染,支持Ctrl+Alt+减号快捷键一键切换目录展开/收起状态,带悬浮式状态视觉反馈,精准识别一级目录不影响多级目录,⚠️已知问题:上滑侧边目录栏会触发自动折叠逻辑
#飞书
#文档工具
#目录导航
資料統計
總安裝量
289
近 24 小時
+0
使用者評分
-
廣告
描述
版本1
評分0
權限說明
飞书文档一级目录折叠助手,自动折叠并支持快捷键切换。
載入中…
这是专为飞书文档(Feishu Wiki)设计的目录管理增强脚本,核心解决长文档一级目录展开过多、浏览不便的问题,支持自动折叠+快捷键控制,适配飞书SPA动态加载特性,兼顾操作效率与视觉反馈。
Ctrl+Alt+-(减号)一键切换所有一级目录的展开/收起状态indent-level-1.heading-1)生效,不影响二级/多级目录Ctrl+Alt+- 组合键,避免与飞书原生快捷键冲突https://*.feishu.cn/wiki/*)document-idle 时机运行,避免阻塞页面加载确保浏览器已安装用户脚本管理器扩展:
或者手动创建新脚本,复制上述完整代码并保存
https://*.feishu.cn/wiki/*| 操作方式 | 功能 | 说明 |
|---|---|---|
| 页面加载完成 | 自动折叠一级目录 | 3秒后开始检测,最长等待20秒,稳定后折叠 |
Ctrl+Alt+-(减号) |
切换目录状态 | 全部展开→全部收起 / 全部收起→全部展开 |
| 观察悬浮提示框 | 查看操作结果 | 蓝色=收起,红色=展开,2秒自动消失 |
| 打开控制台(F12) | 查看详细执行日志 | 可排查目录折叠/展开失败问题 |
注意:
- 快捷键触发时确保焦点不在输入框内,避免无效
- ⚠️ 已知问题:上滑侧边目录栏会触发自动折叠,临时解决方案可手动按快捷键恢复展开状态
// 核心配置参数
const maxWaitTime = 20000; // 最大等待目录加载时间(ms)
const checkInterval = 500; // 目录数量检测间隔(ms)
const stableThreshold = 3; // 目录数量稳定次数阈值
const statusShowTime = 2000; // 状态提示显示时长(ms)
const shortcutKey = '-'; // 快捷键(Ctrl+Alt+减号)
// 1. 折叠所有一级目录核心逻辑
function collapseAll() {
const items = document.querySelectorAll('li.catalogue__list-item.indent-level-1.heading-1.collapsible');
let processedItems = new Set(); // 去重集合
let hasUnprocessed = false;
items.forEach(item => {
const collapseSpan = item.querySelector('span.catalogue__item-collapse:not(.collapsed)');
const textSpan = item.querySelector('span.text');
if (collapseSpan && textSpan) {
const itemId = textSpan.textContent;
if (!processedItems.has(itemId)) {
processedItems.add(itemId);
collapseSpan.click(); // 执行折叠
// 验证折叠状态
setTimeout(() => {
if (!item.querySelector('span.catalogue__item-collapse.collapsed')) {
hasUnprocessed = true; // 标记失败项
}
}, 100);
}
}
});
return !hasUnprocessed;
}
// 2. 快捷键监听核心
document.addEventListener('keydown', function (e) {
if (e.ctrlKey && e.altKey && e.key === '-') {
toggleAll(); // 切换目录状态
e.preventDefault();
e.stopPropagation();
}
}, true);
// 3. DOM变化监听核心
const observer = new MutationObserver(mutations => {
mutations.forEach(mutation => {
if (mutation.addedNodes.length) {
// 检测新加载的一级目录并折叠
const hasNewItems = Array.from(mutation.addedNodes).some(node => {
return node.nodeType === 1 && node.matches('li.catalogue__list-item.indent-level-1.heading-1.collapsible');
});
if (hasNewItems && !initCollapse) {
setTimeout(collapseAll, 300);
}
}
});
});
Ctrl+Alt+-,一键切换目录状态| 问题描述 | 临时解决方案 |
|---|---|
| 上滑侧边目录栏触发自动折叠 | 按Ctrl+Alt+-快捷键手动展开目录 |
| 部分目录折叠/展开失败 | 刷新页面后重试,或手动点击目录旁的折叠按钮 |
| 快捷键无响应 | 确保焦点不在输入框内,或检查是否有快捷键冲突 |
A:
heading-1)Ctrl+Alt+-快捷键触发折叠A:
#feishu-collapsor-status的样式,调整top/left值:top: 120px; /* 向下调整 */
right: 20px; /* 改为右侧显示 */
A:
if (e.ctrlKey && e.altKey && e.key === '-')
e.key === '-'改为想要的按键(如e.key === '[')Ctrl+Alt+- 切换目录状态本脚本仅供学习交流使用,请勿用于商业用途。脚本仅模拟人工点击操作,未修改飞书文档核心功能,使用脚本产生的一切后果由使用者自行承担。
如果您在使用过程中遇到问题或有改进建议,请通过以下方式反馈:
温馨提示: