Javascript 向TinyMCE添加自定义元素的首选方法

Javascript 向TinyMCE添加自定义元素的首选方法,javascript,tinymce,rich-text-editor,Javascript,Tinymce,Rich Text Editor,我是tinyMCE的新手,目前正在研究向tinyMCE添加自定义元素的首选方法 我在工具栏上添加了许多按钮,这些按钮依次触发(a)为文本的选定部分插入元素,以及(b)再次单击时从选定文本中删除这些元素 我不想让这些元素嵌套,所以基本上我只想用给定的、不重叠的标记标记句子或单词的部分,例如:Hello world 目前,我在tinyMCE文档中发现了以下两种可能性: #1 tinyMCE.execInstanceCommand(editor_id, command, user_interface,

我是tinyMCE的新手,目前正在研究向tinyMCE添加自定义元素的首选方法

我在工具栏上添加了许多按钮,这些按钮依次触发(a)为文本的选定部分插入元素,以及(b)再次单击时从选定文本中删除这些元素

我不想让这些元素嵌套,所以基本上我只想用给定的、不重叠的标记标记句子或单词的部分,例如:
Hello world

目前,我在tinyMCE文档中发现了以下两种可能性:

#1 tinyMCE.execInstanceCommand(editor_id, command, user_interface, value, focus)    

其中#2看起来更灵活,因此值得我追求

我已经开始使用第2种方法实现插件,但我不确定如何处理以下内容:

  • 选择重叠的元素边界和文本节点(如
    hello world!
  • 合并相邻元素(
    barbar
    )或
  • 如何处理空元素等等
这就是为什么我想知道我是否缺少某种预定义的接口,因为“正常”元素同样需要很多这些功能,例如
strong、em、h1、…、h6
等等


如果您需要更多信息,请告诉我,任何提示或指针都将不胜感激。

出于格式化目的,tinymce核心文件中有
Formatter.js
类。
但是您想要的是相当复杂的。我们试图阻止tinymce嵌套跨距,并根据需要调整了
Formatter.js

为了进行格式化,tinymce核心文件中有
Formatter.js
类。
但是你想要的是相当复杂的。我们试图阻止tinymce嵌套跨距,并根据我们的需要调整了
Formatter.js

感谢Thariama的回答,我的意图是尽可能简单:-)你介意给我发送相应的代码片段吗(只有在不会造成任何麻烦/不便的情况下)?我也在努力避免筑巢。我想我的主要问题是,我仍然在寻找“正确”的方法和地点来做这件事,但我会尝试学习Formatter.js,不幸的是,这样只提供了有限的空间来发布,所以我把类代码粘贴在这里:。我希望这会对你有所帮助。谢谢你,如果我还没有把这个标记为已解决,你介意吗?你的回答很有帮助,但如果还有其他意见,我也很高兴听到:-)谢谢你的回答Thariama,我的意图是尽可能简单:-)你介意给我发送相应的代码片段吗(只有在不会造成任何麻烦/不便的情况下)?我也在努力避免筑巢。我想我的主要问题是,我仍然在寻找“正确”的方法和地点来做这件事,但我会尝试学习Formatter.js,不幸的是,这样只提供了有限的空间来发布,所以我把类代码粘贴在这里:。我希望这会对你有所帮助。谢谢你,如果我还没有把这个标记为已解决,你介意吗?你的回答很有帮助,但如果还有其他意见,我也很乐意听到:-)
#2  var n = dom.create(element);
    n.innerText = sel.getContent({format : 'text'});
    tinyMCE.activeEditor.selection.setNode(n);