如何让Tinymce(浏览器中的“富文本编辑器”)保留缩进。

5
问题:我使用Drupal与富文本编辑器,但富文本编辑器喜欢通过删除缩进和格式来破坏我的文本。在桌面编辑器中,这是不可接受的,但人们似乎容忍在浏览器中使用wyswigs。
问题:如何关闭它?我已经搜索了一下,但我还没有发现告诉富文本编辑器保留我的缩进和文本格式的最佳实践方法。
5个回答

3

将以下配置添加到tinymce的初始化脚本中

tinymce.init({
    protect: [/[\n\f\r\t\v]/g]
});

1
这不起作用,tinymce仍然会在加载的任何内容中剥离\t字符。 - Jelle De Loecker

2
这可能不完全是您要找的,但Drupal的htmlpurifier模块可以整理HTML并使您的HTML符合标准。它可能会删除缩进,但非常有用。
另一个更简单的模块是htmltidy,不确定它是否可以保留缩进。

1
发生这种情况的原因是富文本编辑器实际上是一个xhtml编辑器。 在xhtml中,大多数标签(除了PRE标签)默认情况下会合并多个空白字符为一个空格。
要解决这个问题,在tinyMCE中,您需要创建一个包含以下内容的样式表:
* {white-space: pre;}

在初始化编辑器时,请将样式表引用为content_css。请注意,由于HTML的空格处理方式,虽然您将保留格式,但它不再是所见即所得的。

另一个选项是将代码包装在PRE元素中,但是在tinyMCE中默认没有此按钮(或者我认为没有)。

编辑:

正如mikl所提到的,tinyMCE还有一个预格式化的配置选项


预格式化是 v3 中的一个选项,在 v4 或 v5 中似乎没有相应的选项。 - Brad Kent

1

我曾经在寻找有关TinyMCE的相同答案,即使在2015年5月,TinyMCE的作者们仍将空格剥离视为一种功能。它无法被禁用,尽管文档表明配置选项preformatted将像<pre>标记一样保留空格。我还没有成功地运行它或任何其他东西,并且我相信文档必须描述一个不再存在于代码中的功能。

http://community.tinymce.com/forum/viewtopic.php?id=26021

该线程反复建议WYSIWYG中的代码可以进行全面重新格式化,并且最好进行服务器端重新格式化。不要忘记,目标是尽可能减少重新格式化,因此服务器端工具对文档结构同样具有破坏性。根据TinyMCE开发人员的说法,这是一个不会修复的问题,因此我怀疑在可预见的未来这种情况不会改变。


版本3.4.5在更新日志中列出了whitespace_elements,但我没有找到它的文档,也似乎无法正常工作。不确定。它肯定在代码中,但它初始化为 pre script noscript style textarea,我不清楚用户配置是否可以覆盖它(我已经尝试过,但可能是我做错了什么)。 - jimp

1

3
这绝对是一张漂亮的截图。不幸的是,它不能用,至少对我来说不行。一旦"rich editor"在浏览器文本区域中被激活,GUI控件内部的标记就会立即被剥离空格并呈现为可怕的"单行HTML,没有任何空格保留"。 - dreftymac
1
+1 我简直不敢相信我之前竟然忽略了那个预格式化配置选项!谢谢你分享这个宝石! - Matt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接