所以我正在使用TinyMCE处理一些内容,不幸的是,有时,放入其中的内容(来自数据库的RTE blob数据)正在打破脚本。
Here is a fiddle它的实际效果。
我使用一个函数来设置tinymce.init()
,它工作正常,但似乎RTE数据中的某些内容完全打破了textareas。
这是脚本:
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>
查看小提琴中打破它的内容。有没有办法保护我的脚本免受这样的输入?
这也是错误:
Uncaught TypeError: undefined is not a function tinymce.cachefly.net/4.1/tinymce.min.js:6
答案 0 :(得分:1)
这似乎是bug in TinyMCE。
复制:http://jsfiddle.net/pevans02/6t25w/
快速解决此问题只是确保评论前有空格
<textarea name="definition" id="definition"> <!-- some comment --></textarea>
<textarea name="consent" id="consent"></textarea>
<textarea name="penalty" id="penalty"></textarea>
在有关它的错误中添加了评论4.1
将code
添加到工具栏列表
toolbar: "code bold italic underline, bullist, numlist superscript subscript"
修补程序代码
错误似乎来自过滤掉data-mce-bogus
元素
//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'));
Tinymce 4.1.2 Minified Version Patch
修补程序源(需要node.js构建)
从github获取tinymce源,patch Formatter.js和构建
git clone git://github.com/tinymce/tinymce.git ./tinymce
git checkout -b patched 416e35737aed2af60eff69887bb7bf33cc3b4bc8
wget -O Formatter.js.patch https://www.dropbox.com/s/mt5ar8k8iru8x6o/Formatter.js.patch?dl=1
patch -p1 < Formatter.js.patch
npm i -g jake
npm i
jake