如何使用Rangy选择文本节点?

nkk*_*law 3 javascript range selection rangy

我有一个常插入DOM的常规文本节点.

我想选择它(就像用户用鼠标选择它一样),使用Javascript或Rangy.

我有以下(我觉得很难看)代码:

        // insert as regular text node
        var txt = document.createTextNode($mySpan.text());
        $myHeading.get(0).insertBefore(txt, $mySpan.get(0));

        // select again
        var sel = rangy.getSelection();
        sel.removeAllRanges()

        var range = rangy.createRange();
        range.selectNode(txt);
Run Code Online (Sandbox Code Playgroud)

我很乐意为此提供帮助.我不知道如何实现它,并且goggling不起作用.我能想到的唯一方法是在文本之间插入2个元素,然后选择它,然后删除元素,但我想知道是否有更优雅的方式.

谢谢,任何帮助表示赞赏.

Lou*_*uis 5

除非我的眼睛欺骗了我,否则你的代码中唯一缺少的就是这一行:

sel.setSingleRange(range);
Run Code Online (Sandbox Code Playgroud)

只需将其添加到您目前拥有的结尾即可.(你也可以删除sel.removeAllRanges().)