这个问题很简单,但我一直在努力寻找任何简单的解决方案来解决它。我正在使用WordPress中的TinyMCE。
假设我有一个单词在html内容中的位置,我可以从编辑器中获得,如下所示:
tinymce.activeeditor.getContent();
因此,我需要选择此单词并移动到“选择”(滚动到它)。例如,如果内容包含以下内容:
...Bla bla bla some <strong>text</strong> and more text and banana and <img src=.../> more text bla blaa...
你可以看到单词“banana”,例如,我想选择它。我知道它的位置,假设它的start_pos = 30,end_pos = 35。它不一定是一个单词,它可以是一个短语(几个单词),但我知道它的位置,所以没有区别。
我需要一种方法在可视化编辑器(或富编辑器)中选择它,就像我对文本区域所做的那样(如果文本模式是活动的),如下所示:
// cl_editor_lastfocus is textarea
cl_editor_lastfocus.setSelectionRange(start, end);
let charsPerRow = cl_editor_lastfocus.cols;
let selectionRow = (start - (start % charsPerRow)) / charsPerRow;
let lineHeight = cl_editor_lastfocus.clientHeight / cl_editor_lastfocus.rows;
// scroll !!
cl_editor_lastfocus.scrollTop = lineHeight * selectionRow;
cl_editor_lastfocus.focus();
有可能吗?据我所知,这里的大多数答案都建议选择包含此文本的文本节点,然后设置选择范围。但我不知道我必须选择哪个文本节点,因为我想要的单词可能在文档中的任何地方。另外,我可以用span将单词括起来,然后选择此span节点,但我不希望以后保留此span。当选择将被改变或不再需要时。
2条答案
按热度按时间x8goxv8g1#
我想,在可视化模式下进行选择的最简单方法是将字符串 Package 到span中,然后使用editor.dom.select选择该span。
对我很有效,我希望它能帮助到其他人。
bfnvny8b2#
下面是我基于上面的@tonyAndr解决方案使用的一组选择脚本。我用它来构建一个定制的拼写检查器。