如何从GWT中的RichTextArea获取游标位置或位置?

我想从RichTextArea获取光标位置或位置。 我不知道如何得到当前的光标位置没有任何鼠标事件。 例如TextArea具有方法getCursorPos(),但RichTextArea不具有像TextArea一样的方法。 任何人有任何想法? 请帮帮我...

提前致谢...


如果您想在光标位置的RichTextArea中插入某些内容,可以使用格式化程序完成:

RichTextArea.Formatter formatter = richText.getFormatter();
formatter.insertHTML("My text is inserted at the cursor position");

要使用JavaScript查找光标位置,请尝试Tim Down提出的解决方案:

获取范围的开始和结束偏移量相对于其父容器


在Vaadin 7.5 @AndreiVolgin答案似乎不起作用。 但是如果有人只想在光标位置粘贴一些文本,那么Vaadin插件的CKEditor包装可能会有所帮助(链接)。

这是一个后人的例子:

CKEditorTextField textArea;
// and for example in some listener function we could call:
textArea.insertHtml("<b>some html</b>");
textArea.insertText("sample text");

不知道这是否仍然需要,但我今天一直在尝试做同样的事情,并且无法真正找到明确的答案。 我确实发现了这个非GWT解决方案(在包含HTML内容的contentEditable区域中获取插入(光标)位置),这需要略微调整。 希望这可以帮助某人。

    public static native int getCursor(Element elem) /*-{
    var node = elem.contentWindow.document.body
    var range = elem.contentWindow.getSelection().getRangeAt(0);

    var treeWalker = $doc.createTreeWalker(node, NodeFilter.SHOW_TEXT, function(node) {
        var nodeRange = $doc.createRange();
        nodeRange.selectNodeContents(node);
        return nodeRange.compareBoundaryPoints(Range.END_TO_END, range) < 1 ? NodeFilter.FILTER_ACCEPT
                : NodeFilter.FILTER_REJECT;
    }, false);

    var charCount = 0;
    while (treeWalker.nextNode()) {
        charCount += treeWalker.currentNode.length;
    }

    if (range.startContainer.nodeType == 3) {
        charCount += range.startOffset;
    }

    return charCount;
}-*/;
链接地址: http://www.djcxy.com/p/11225.html

上一篇: How to get cursor position or location from RichTextArea in GWT?

下一篇: iText, unicode characters and Java