【发布时间】:2016-12-28 09:28:59
【问题描述】:
我正在为 TinyMCE 开发一个插件。流程应该是这样的:
1) 用户选择了一些文本
2) 他按下了我的自定义插件的工具栏按钮
3) 执行一个自定义函数,对选定文本执行自定义操作,例如,假设它用下划线标签围绕选定文本:<u></u>
4) 完成操作后,所选文本会被插入到编辑器中进行选择的位置
5) 现在,无论选择什么文本,我都会获取所有编辑器的 HTML 并根据我的需要进行更改,例如为 HTML 中的每个标签添加自定义属性
6) 有了新的 HTML,我想将它重新插入到编辑器中
7) 此外,在过程结束时,所选文本仍应突出显示
我正在为第 4-7 步苦苦挣扎。
我的问题分为两步:
A) 我得到选定的文本,我可以更改它。问题是我不知道如何将其设置回整个编辑器的文本。在我做的插件中:
var newSelectionHTML = ed.selection.getContent();
但是如何使用 newSelectionHTML 更新编辑器文本的选定部分
B) 我不知道如何更改整个编辑器的 HTML 并将其设置到编辑器中,同时保持用户选择。
ed.setContent(newHTML)
这样做会删除用户选择并将光标移动到开头。如何在整个过程中保存用户选择(步骤 1-7)?
提前谢谢你。 阿萨夫
【问题讨论】:
-
我正在做类似的事情,但我无法迭代该范围内的所有选定节点。您是否找到了一种方法来做到这一点,因为 TinyMCE 中的选择由于某种原因没有containsNode 功能
标签: javascript html tinymce range wysiwyg