想用 quicker 获取。
能不能通过 API 获取“当前活动文档的 ID”?
相关帖子
-
针对这个问题我觉得有两种思路:
- 监听标签切换,把当前文档的 id 写入到 public 下的 xxx.json 文件中,然后在 quicker 中用 http 请求
http://127.0.0.1:6806/public/xxx.json
文件即可,优点:实现简单。 监听标签切换可参考 求 js 代码,只展开当前活动页签的文档树 - wilsons 的回帖 这个帖子的observeTabChanged
函数。 - 通过 GoEasy 平台的 webscoket 作为媒介实现成员间互发消息,优点:双方可实时交互。
实现方式可参考 在线设备管理 插件的代码。
- 监听标签切换,把当前文档的 id 写入到 public 下的 xxx.json 文件中,然后在 quicker 中用 http 请求
- 其他回帖
-
仅靠 quicker 的话没有十分可靠的方案,可以考虑安装“运行 javascript”插件,然后参考这个动作思源同步感知与远程管理 - by 浅沧 - 动作信息 - Quicker 给思源发 js 代码,通过插件在思源内运行 js 代码并返回结果
1 回复 -
应该把
.protyle-breadcrumb__item--active
这个去掉,在聚焦模式下面包屑没有焦点,获取失败。不过这种写法不兼容手机,我通常用下面的方法:
// 获取当前文档的protyle function getProtyle() { try { if(document.getElementById("sidebar")) return siyuan.mobile.editor.protyle; const currDoc = siyuan?.layout?.centerLayout?.children.map(item=>item.children.find(item=>item.headElement?.classList.contains('item--focus') && item.panelElement.closest('.layout__wnd--active'))).find(item=>item); return currDoc?.model.editor.protyle; } catch(e) { console.error(e); return null; } } // 然后,获取当前文档的id可以这样(注意,这里我用了.protyle-title选择符,也是为了兼容手机版) const currDocBlockId = getProtyle().wysiwyg.element?.querySelector('.protyle-title')?.dataset?.nodeId;
-
这个可以不?
// 打印显示内容的文档的id document.querySelectorAll('div.fn__flex-1.protyle:not(.fn__none) span.protyle-breadcrumb__item.protyle-breadcrumb__item--active').forEach( file_ele => console.log(file_ele.getAttribute("data-node-id")) ) // 打印所有页签文档的id document.querySelectorAll('div.fn__flex-1.protyle span.protyle-breadcrumb__item.protyle-breadcrumb__item--active').forEach( file_ele => console.log(file_ele.getAttribute("data-node-id")) )
1 回复 - 查看全部回帖
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于