在tinyMCE中将格式应用于noneditabel区域

时间:2016-02-09 10:02:11

标签: javascript tinymce tinymce-4

我将tinyMCE与'noneditable'插件一起使用。

当我在tinyMCE编辑器中标记包含不可编辑区域的某些文本,然后将某种格式应用于此选择时,格式将不会应用于 不可编辑的片段。

例如:

我选择:

start Text  <span class="mceNonEditable" data-mce-contenteditable="false">not editable area</span> end text

我想把它变成粗体,结果是:

<strong>start Text  </strong><span class="mceNonEditable" data-mce-contenteditable="false">not editable area</span><strong> end text</strong>

我的期望和我需要的是以下内容:

<strong>start Text  <span class="mceNonEditable" data-mce-contenteditable="false">not editable area</span> end text</strong>

我可以做些什么,也可以格式化不可编辑的片段?

(我使用tinyMCE 4.1.10)

2 个答案:

答案 0 :(得分:1)

tinymce论坛中的worakaround是操纵文件: 的 /tinymce/classes/Formatter.js

在函数中:

function applyRngStyle(rng, bookmark, node_specific)
{

....
                        // Is it valid to wrap this item
                        // TODO: Break this if up, too complex
                        if (contentEditable && !hasContentEditableState && isValid(wrapName, nodeName) && isValid(parentName, wrapName) &&
                                !(!node_specific && node.nodeType === 3 &&
                                node.nodeValue.length === 1 &&
                                node.nodeValue.charCodeAt(0) === 65279) &&
                                !isCaretNode(node) &&
                                (!format.inline || !isBlock(node))) {
                            // Start wrapping
.....

}

我必须取消注释&#34; contentEditable&amp;&amp; !hasContentEditableState &#34;

function applyRngStyle(rng, bookmark, node_specific)
{

....
                        // Is it valid to wrap this item
                        // TODO: Break this if up, too complex
                        // This are the changes that I made:
                        if (/*contentEditable && !hasContentEditableState &&*/ isValid(wrapName, nodeName) && isValid(parentName, wrapName) &&
                                !(!node_specific && node.nodeType === 3 &&
                                node.nodeValue.length === 1 &&
                                node.nodeValue.charCodeAt(0) === 65279) &&
                                !isCaretNode(node) &&
                                (!format.inline || !isBlock(node))) {
                            // Start wrapping
.....

}

答案 1 :(得分:0)


我知道这是一个有点老的问题,但仍然是该问题的第一批搜索结果之一...
我们在外队遇到同样的问题,
我们通过下拉选择和内容添加了不可编辑的文本
,当我们在编辑器中选择文本范围并尝试格式化时,不可编辑元素将被忽略。
我通过将不可编辑的内容(span元素)与另一个可编辑的范围包装在一起来解决了此问题,
现在,当选择文本范围时,外部范围将获得所选格式并影响内部范围(不可编辑)。

<span class="someClass"><span class="mceNonEditable">Non Editable Text</span></span>

*外部元素必须具有tinymce不会清除的类。