7

我一直在寻找解决方案一段时间,我发现的唯一修复只影响文本在编辑器本身中的显示方式,而不影响生成的文本在发送/保存到其他地方时的外观。我说的是 CSS 修复和类似的东西。

我正在使用 CKEditor 通过我们的 Web 应用程序撰写和发送电子邮件,虽然 css 修复更改了编辑器本身显示的字体,但收到的电子邮件仍显示在 TNR 或从电子邮件客户端继承的任何内容中。当然,除非我从插件中更改每个段落的字体和大小。

从我在插件中设置字体和大小时所注意到的情况来看,CKEditor 使用新更改的样式(例如<span style="font: Arial"><span style="font-size: 12"></span></span>)创建了一个跨度(实际上是两个,一个带有字体,一个带有大小),我认为我可以用我想要的字体和大小样式将整个结果包装在 span 或 div 中,但这可能会干扰用户的模板和样式。

有没有办法从插件本身设置默认文本样式(如电子邮件收件人所见),或者我必须想出一个破解它的方法。

4

3 回答 3

11

这是我发现强制 ck 编辑器创建默认字体的唯一方法。IE 即使没有选择字体,它也会将输入的文本包装在(默认)字体范围内,因此将输出格式化文本。如果您希望更改具有通用性,请将以下内容添加到 config.js。否则,也应该可以将其添加到一个实例中。虽然我没试过。

config.font_defaultLabel = 'Arial';

这将使下拉菜单默认为“Arial”。尽管即使这样也不能像我希望的那样工作。首先,编辑器必须被激活(不仅仅是加载)才能将下拉菜单设为默认值。然后与手动选择不同,该值不会在下拉框中突出显示。它只是显示。

然后将其添加到您的默认配置选项下方:

CKEDITOR.on( 'instanceReady', function( ev ) {
     ev.editor.setData('<span style="font-family:Arial, Verdana, sans-serif;">&shy;</span>');
});

这将使用您需要的跨度预先填充文本区域。但是,您必须在 span 标签中包含一些字符才能强制此“hack”工作。所以你会在你的输出中遇到你并不真正想要的东西。我在网上某处找到的原始版本使用:

&shy;

这似乎相对无害。

我一直在寻找并寻找更好的方法(如果有人知道,我会很高兴)。大多数人只是说捕获输出并重新格式化它。这对我来说真的不是一个选择。也可以使用自定义插件来完成此操作。这对我来说也不太可行。

希望这可以帮助某人至少节省一些时间。

PS 原件来自 CK editor 的支持板。这是链接:论坛

于 2012-12-06T15:59:09.783 回答
1

如果您想在编辑器之外更改文本的样式,那么您必须对其进行样式设置......外部编辑器:)。电子邮件样式表中的 AFAIK 无法使用,因此剩下的就是使用div内联样式进行包装。

要在 CKEditor 中获得相同的结果,您应该编辑contents.css和设置与包装器body相同的样式。div

下一步是从工具栏中删除格式组合,因为它基于标记。对于电子邮件,最好使用样式组合,因为您可以定义适用于每种样式的内联样式、标签和属性。检查styles.js

于 2012-10-30T22:19:14.860 回答
1

将此添加到您的 config.js 文件中

 CKEDITOR.config.font_defaultLabel = 'Arial';
 CKEDITOR.config.fontSize_defaultLabel = '20'; 

然后当你的 CKEditor 被触发时它会被改变。

于 2017-02-08T11:59:32.170 回答