这是一个老问题,但显然它在今天(2020 年下半年)仍然引起了很多关注。
遗憾的是,随着 TinyMCE v5 的发布,我发现的大多数解决方法都不再有效。我确信它们曾经工作过,但每个 TinyMCE 版本似乎都会带来新的“约束”,从而削弱这些变通方法......
不做讨论,我相信这是进化的代价。对于像 TinyMCE 这样的老产品,令人难以置信的是,它仍然存在并且在踢,在竞争中遥遥领先。到目前为止,它是适用于所有环境的最有效和最灵活的解决方案之一,包括移动和那些由此诞生的新语言和框架(这似乎是最近的一种趋势,每天都有新的语言和框架出现)。
因此,考虑到这一点,经过多次(失败)尝试使大多数提议的解决方案发挥作用,我决定深入研究源代码(TinyMCE v5.4)以更好地理解它。我发现总体而言是一款非常出色的产品,而且每个人都在寻找的解决方案比我预期的要简单得多。
事不宜迟,我的解决方案简单有效。它实现了一个编辑器,它采用整个文档区域(或您想要的任何区域),将随浏览器调整大小,不需要任何脚本、没有 hack 和任何可能导致交叉浏览问题的技巧。方法如下:
- 为您的
<html> 和 <body> DOM 对象提供缺少的尺寸属性,并根据您的需要调整间距:
html, body {
width : 100%;
height : 100%;
margin : 0 !important;
padding : 0 !important;
overflow : hidden; /* Required if you want to have the editor taking the entire page. */
/* Otherwise, set as you need it. */
}
- TinyMCE 建议将
<textarea> 嵌入到<form> 对象中。无论您是否按照建议使用它,只需为其提供 ID 和以下 CCS 属性(在我的情况下,它设置为 <form method="post" id="editorBase">):
#editorBase {
display : block !important;
width : 100% !important;
height : 100% !important;
}
- 在TinyMCE Init方法中,添加或修改以下设置:
tinymce.init({
// Required Settings:
width : '100%', // Note value is set as "string".
height : '100%', // Note value is set as "string".
resize : false, // Suggestion: disable the statusbar resizing. :)
// Suggested Settings:
toolbar_sticky : true, // Keep the menu and tollbar in a fixed position .
toolbar_location : 'top', // You can try 'top', 'bottom' or 'auto'.
toolbar_mode : 'floating', // It is simply a button behavior settings.
// Options are: 'floating', 'sliding', 'scrolling', or 'wrap'.
});
-
但在 TinyMCE Init 设置中,找到 plugins 项目并从中删除 autoresize 选项(这是最重要的一步!) .
-
完成!尝试并测试它! (是的!一切都完成了!)
通过这些简单的调整,您可以将编辑器设置为适合任何设计。随意根据需要调整它。只是不要忘记将 TinyMCE Init 设置中的width 和height 属性设置为字符串,并使其与<form> 的CSS 设置保持一致。
在 TinyMCE Init 设置的width 和height 属性中使用字符串而不是数值的原因是允许您使用“%”、“em”、“pt "等...否则,所提出的解决方案将永远无法工作。
另一个让它更加整洁的技巧是将编辑器设置为无边框皮肤(该功能仅在“专业”中提供TinyMCE 版本)。不,它不是 hack,它只是对 CSS 的简单调整,并且完全被 TinyMCE 的 EULA 和许可所允许。只需将以下 CSS 添加到您的页面样式表中,即可免费享受无边框编辑器:
.tox-tinymce { border:none !important; }
再简单不过了。
编码愉快!