Etherpad技术问询:如何获取Etherpad中用户选中的文本内容
Etherpad选中部分文本提取可行方案
场景1:前端页面侧直接获取选中文本
Etherpad底层编辑器基于ACE封装,可直接通过编辑器实例获取选中内容:
- 同页面下调用方法:
// 获取Etherpad内置的ACE编辑器实例 const padEditor = window.pad.editor.ace; // 方法1:直接获取当前选中的文本 const selectedText = padEditor.getCopyText(); // 方法2:通过选区范围精确获取对应内容 const selectionRange = padEditor.getSelectionRange(); const selectedContent = padEditor.session.getTextRange(selectionRange);
- iframe嵌入场景调用方法:
const etherpadIframe = document.getElementById("你的Etherpad iframe节点ID"); const padEditor = etherpadIframe.contentWindow.pad.editor.ace; const selectedText = padEditor.getCopyText();
如果是做Etherpad自定义插件,把上述逻辑封装到客户端代码中,按需触发即可。
场景2:服务端需要获取指定用户的选中文本
官方原生接口无相关能力,需做轻量二次开发:
- 第一步:客户端监听选区变化,上报选区参数到服务端
window.pad.editor.ace.on("selectionChange", () => { const currentRange = window.pad.editor.ace.getSelectionRange(); // 上报字段包括:padID、当前用户ID、选区起始行/列、选区结束行/列、当前pad修订版本号 });
- 第二步:服务端新增自定义接口,收到请求后先调用原生
/getText接口获取pad全文,再根据存储的对应用户最新选区参数,截取对应位置的文本返回即可。
注意:多人协作场景下需要匹配修订版本号,确保选区参数和当前全文的版本一致,避免出现选区偏移错位的问题。
内容的提问来源于stack exchange,提问作者Yogesh
相关产品推荐
相关产品推荐

