Javascript 富文本内容打断了TinyMCE

Javascript 富文本内容打断了TinyMCE,javascript,html,tinymce,Javascript,Html,Tinymce,因此,我正在使用TinyMCE处理一些内容,不幸的是,有时,放入其中的内容(来自数据库的RTE blob数据)会破坏脚本 它在行动中的作用 我使用一个函数来设置tinymce.init(),它工作正常,但是RTE数据中似乎有什么东西完全破坏了文本区域 以下是脚本: function initMCE(e) { tinymce.init({ mode:"exact", elements:e, plugins:"paste", h

因此,我正在使用TinyMCE处理一些内容,不幸的是,有时,放入其中的内容(来自数据库的RTE blob数据)会破坏脚本

它在行动中的作用

我使用一个函数来设置
tinymce.init()
,它工作正常,但是RTE数据中似乎有什么东西完全破坏了文本区域

以下是脚本:

function initMCE(e) {
    tinymce.init({
        mode:"exact",
        elements:e,
        plugins:"paste",
        height:300,
        width:750,
        toolbar: "bold italic underline, bullist, numlist superscript subscript",
        menubar:false,
        valid_elements : "em/i,li,ul,ol,u,strong/b,sup,sub,p"
    });
}
initMCE("definition");
initMCE("consent");
initMCE("penalty");
HTML很简单,但是:

<textarea name="definition" id="definition"></textarea>
<textarea name="consent" id="consent"></textarea>
<textarea name="penalty" id="penalty"></textarea>
这似乎是一个问题

复制:

解决这个问题的一个快速方法就是确保在注释之前有一个空格

<textarea name="definition" id="definition"> <!-- some comment --></textarea>
<textarea name="consent" id="consent"></textarea>
<textarea name="penalty" id="penalty"></textarea>
补丁代码

错误似乎来自筛选出
数据mce伪元素的语句之一

//From Formatter.js source
parents = Tools.grep(parents, function(node) {
    return !node.getAttribute('data-mce-bogus');
});
由于注释没有
getAttribute
函数,因此会出错。因此,添加对
getAttribute
的检查可以修复它

return (node.getAttribute && !node.getAttribute('data-mce-bogus'));

补丁源程序(需要node.js才能生成)

从github获取tinymce源代码,并构建

git克隆git://github.com/tinymce/tinymce.git /蒂尼姆斯
git签出-b修补416E35737AED2AF60EFF69887BB7BF3C3B4BC8
wget-O Formatter.js.patchhttps://www.dropbox.com/s/mt5ar8k8iru8x6o/Formatter.js.patch?dl=1
修补程序-p1

//From Formatter.js source
parents = Tools.grep(parents, function(node) {
    return !node.getAttribute('data-mce-bogus');
});
return (node.getAttribute && !node.getAttribute('data-mce-bogus'));