首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Etherpad:如何从etherpad捕获选定的文本

Etherpad:如何从etherpad捕获选定的文本
EN

Stack Overflow用户
提问于 2021-09-30 09:28:53
回答 1查看 47关注 0票数 0

我想从Etherpad捕获选定的文本。有一些可用的/getText方法可以返回整个文本。我的要求是只获取选定的文本。

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-25 13:29:53

如果要在外部框架中使用所选文本,可以使用postMessage系统。

代码语言:javascript
复制
exports.postAceInit = (hookName, context) => {
  window.addEventListener('message', function receiver(e) {
    // Data of Request
    let data = e.data;
    // Origin URL of Request
    let origin = e.origin;

    if(data == 'GET_SELECTION'){
      context.ace.callWithAce((ace) => {
        // Read current selection
        let rep = ace.ace_getRep();
        
        // Start of the Selection [x,y]
        let selStart = rep.selStart;
        // End of the Selection [x,y]
        let selEnd = rep.selEnd;

        // Read Lines of Pad
        let lines = rep.lines;

        let retVal = '';

        // Run through Selection
        for(let idx = selStart[0]; idx < selEnd[0]+1; idx++){
           retVal = retVal + lines.atIndex(idx).text;
        }
 
        // Send text to Receiver
        e.source.postMessage(retVal, origin);
      }, 'GET_SELECTION', true);
    }
  , false);
}

收件人和发件人站点:

代码语言:javascript
复制
<script type="text/javascript">
    function sendMessage(message) {
        document.getElementById('etherpad').contentWindow.postMessage(message, '_URL OF YOUR ETHERPAD INSTANCE_');
    }
    function receiver(e) {
        // Read Data of Request
        let data = e.data;
        // Origin URL of Request
        let origin = e.origin;

        alert("GOT: " + data + "\nFROM: " + origin);

        e.source.postMessage('Thanks', origin);
    }

    // Listener gets Requests
    window.addEventListener('message', receiver, false);
</script>

<button type="button" onclick="sendMessage('GET_SELECTION')">GET SELECTION</button>

这段代码将为您提供所选内容中的整行文本。如果想要获取exact字符,则需要在idx for-loop中使用第二个循环

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69389721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档