请问定位光标到上一次的位置呢?

我看有一个 method 是 foucs,可以聚焦到编辑器头部,但是我需要做的是聚焦到上一次的位置,请问如何做到呢?

我是用在自定义上传的方法里的,我需要在插入内容前将光标定位到上一次记录的位置,请问如何做到呢?

               handler(files) {
                    function callback(path) {
                        // 如何在插入内容前定位光标到上一次的位置呢?
                        document.execCommand("insertHTML", false, `  \n${path}`);
                    }
                    upAction(files, vditor, callback);
                },
  • Vditor

    Vditor 是一款浏览器端的 Markdown 编辑器,支持所见即所得、即时渲染(类似 Typora)和分屏预览模式。它使用 TypeScript 实现,支持原生 JavaScript、Vue、React 和 Angular。

    132 引用 • 956 回帖 • 1 关注
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    2156 引用 • 12957 回帖 • 551 关注

广告 我要投放

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • levi0001
    作者

    我把源码中的 getEditorRange, setSelectionFocus 扒下来实现了

    const getEditorRange = (vditor):Range => {
        let range: Range;
        const element = vditor[vditor.currentMode].element;
        if (getSelection().rangeCount > 0) {
            range = getSelection().getRangeAt(0);
            if (element.isEqualNode(range.startContainer) || element.contains(range.startContainer)) {
                return range;
            }
        }
        if (vditor[vditor.currentMode].range) {
            return vditor[vditor.currentMode].range;
        }
        element.focus();
        range = element.ownerDocument.createRange();
        range.setStart(element, 0);
        range.collapse(true);
    
        return range;
    };
    
    const setSelectionFocus = (range: Range) => {
        const selection = window.getSelection();
        selection.removeAllRanges();
        selection.addRange(range);
    }
    

    我为什么要扒下来?一开始我是采用导入的方式的

    import { getEditorRange } from 'vditor/src/ts/util/selection';
    

    引用 getEditorRange 后提示我找不到 VDITOR_VERSION,然后我引用如下

    import { VDITOR_VERSION } from 'vditor/src/ts/constants';
    import { getEditorRange } from 'vditor/src/ts/util/selection';
    

    还是报错。。。。无奈只好 copy 到方法中来了

    求更好的实现方法

  • tenstu
    订阅者

    是个好建议,希望能实现,不然每次还得花时间找到上次编辑的地方