TinyMCE嵌套自定义格式

时间:2016-01-19 05:42:02

标签: javascript tinymce tinymce-4

我尝试创建一系列内嵌文本模式,以使用<span>标记TinyMCE(4.3.2)编辑器内容。我能够创建新的自定义格式并注册新的文本模式,但在尝试匹配嵌套模式时会出现问题。

这些自定义格式的TinyMCE初始化代码为:

formats: {
    'innerFormat': {
        inline: 'span',
        classes: 'inner',
        exact: true,
        selector: 'span.inner'
    },
    'outerFormat': {
        inline: 'span',
        classes: 'outer',
        exact: true,
        selector: 'span.outer'
    }
},
textpattern_patterns: [
    {start: '{{', end: '}}', format: 'innerFormat'},
    {start: '[[', end: ']]', format: 'outerFormat'}
]

我希望能够在编辑器中输入这一行:

[[outerText({{innerText}})]]

并收到此标记:

<span class="outer">outerText(<span class="inner">innerText</span>)</span>

但是TinyMCE在匹配innerFormat(&#34; {{}}&#34;)之后不会识别outerFormat(&#34; [[]]&#34;),留下我用:

[[outerText(<span class="inner">innerText</span>)]]

据我所知,这是由textpattern/plugin.js文件中的这段代码引起的:(〜第101行)

rng = selection.getRng(true);
container = rng.startContainer;
offset = rng.startOffset;
text = container.data;
delta = space ? 1 : 0;

在内部格式匹配后,rng.startContainer返回的容器会立即从父<p>更改为text容器。

如何修改TinyMCE textpattern插件以在父块级元素中搜索文本模式而不是当前选择的容器?

0 个答案:

没有答案