使用复制粘贴(或代码插件),即使我认为我的设置禁止嵌套跨度,用户也可以插入包括跨度产生嵌套跨度的内容。 我确实想要在执行“清理”操作时过滤掉嵌套的跨度。
进行手动清理(粘贴文本后触发的命令“mceCleanup”)也无济于事。
对TinyMCE documentation用户的响应可以选择在为已定义的父节点执行“清理”时丢弃哪些子元素。
我的配置有问题吗?如果是,那有什么不对? 有什么建议吗?
这是我的配置(相关部分,我使用的是最新的tinymce版本(3.3.8),发生在所有主流浏览器中):
cleanup : true,
encoding: "xml",
dialog_type : "modal",
object_resizing: false,
paste_strip_class_attributes: "all",
entity_encoding: "raw",
fix_nesting: true,
invalid_elements: "strong,ul,ol,li",
// The valid_elements option defines which elements will remain in the edited text when the editor saves.
valid_elements: "@[id|class|title|style],"
+ "a[name|href|target|title],"
+ "#p,-ol,-ul,-li,br,img[src],-sub,-sup,-b,-i,"
+ "-span,hr",
valid_child_elements : "body[p|ol|ul]" //EDIT: had some ","s instead of "|"s
+ ",p[a|span|b|i|sup|sub|img|hr|#text]"
+ ",span[a|b|i|sup|sub|img|#text]"
+ ",a[span|b|i|sup|sub|img|#text]"
+ ",b[span|a|i|sup|sub|img|#text]"
+ ",i[span|a|b|sup|sub|img|#text]"
+ ",sup[span|a|i|b|sub|img|#text]"
+ ",sub[span|a|i|b|sup|img|#text]"
+ ",li[span|a|b|i|sup|sub|img|ol|ul|#text]"
+ ",ol[li]"
+ ",ul[li]"
答案 0 :(得分:2)
我认为您的配置没有任何问题。
问题是TinyMCE代码完全忽略了自版本3.3b1(2010年1月25日)以来的valid_child_elements
属性。我使用Window Grep检查3.3.8下载中的所有文件,valid_child_elements
字符串仅在/jscripts/tiny_mce/Classes/Editor.js
中找到两次(并在同一行) - 这简单来说就是一个简单的在其他地方没有使用的赋值语句。
事实证明,在版本3。2。7(2009年9月22日)或更低版本(请参阅http://sourceforge.net/projects/tinymce/files)中,valid_child_elements
属性在addValidChildRules
中调用了一个名为/jscripts/tiny_mce/Classes/dom/Serializer.js
的函数我相信你做的基本上是你想要的。这个版本中有错误让你高兴。在将简化的valid_child_elements
配置参数添加到下载中的一个示例文件后,我最终获得了要删除的嵌套标记:
valid_child_elements : "span[a|b|i|sup|sub|img|#text]"
希望这有帮助。