tinyMCE - 获取内容到光标位置

Woo*_*ome 3 javascript tinymce cursor-position tinymce-plugins

我正在为tinyMCE制作一个单词预测插件,需要提取一些文本,然后从预测单词列表中插入文本.插入应该没问题,因为我知道光标在哪里并且可以使用该mceInsertContent命令.获取预测的文本但是......

我需要提取文本的一个子集,该文本以光标位置之前的字母结尾,并从文本的开头开始.如果需要,我可以自己剥离HTML标签,但我更喜欢让tinyMCE尽可能地做.

我想这样做:

  1. 使用在当前光标位置插入书签 mceInsertContent
  2. 创建从文本开头到书签的范围.
  3. 获取范围的内容.
  4. 删除书签.

现在,因为我不熟悉那些对我来说有点挑战的tinyMCE,所以怎么会这样做呢?

代码需要跨浏览器工作.

Tha*_*ama 7

您可以尝试此代码片段(ed是tinymce编辑器对象)

A.使用mceInsertContent在当前光标位置插入书签

ed.execCommand('mceInsertContent', false,'<span class="marker">\ufeff</span>');
Run Code Online (Sandbox Code Playgroud)

B.创建从文本开头到书签的范围.

var rng = ed.selection.getRng(1);
var rng2 = rng.cloneRange();

// set start of range to begin of forst paragraph
rng2.setStartBefore($(ed.getBody()).find('p:first').get(0));

rng2.setEndBefore($(ed.getBody()).find('span.marker').get(0));
ed.selection.setRng(rng2);
Run Code Online (Sandbox Code Playgroud)

C.获取范围的内容.

// get content of selection (range)
var content = ed.selection.getContent({format: 'text'});
Run Code Online (Sandbox Code Playgroud)

D.删除书签.

$(ed.getBody()).find('span.marker').remove();
Run Code Online (Sandbox Code Playgroud)

更新:如果您担心选择更改,可以重置初始范围

ed.selection.setRng(rng);
Run Code Online (Sandbox Code Playgroud)