TinyMCE 4:自动将一种块格式应用于新块

TinyMCE 4: Apply one block format to new blocks automatically

本文关键字:一种 格式 新块 应用于 TinyMCE      更新时间:2023-09-26

在TinyMCE 4中,我使用标准的formatselect控件来格式化内容中的块元素。它的配置通常如下所示:

block_formats: 'Paragraph=p;Header 1=h1;Header 2=h2'

我有这些块的自定义样式,无论编辑器生成的 HTML 最终在哪里,我都需要保留这些样式。主题中的content.min.css可以控制块在编辑器中的外观,但不能控制其他地方的外观,所以我不能依赖它。所以我使用自定义格式而不是标准块格式。我的配置如下所示:

block_formats: 'Normal=normal;Header 1=header1;Header 2=header2',
formats: {
    normal: {block: 'p', styles: {
        'font-family': '"Helvetica Neue",Helvetica,Arial,sans-serif',
        'font-weight': 'normal',
        'font-size': '13px',
        'line-height': '20px',
        'color': '#333'}},
    header1: {block: 'h1', styles: {
        'font-family': '"Helvetica Neue",Helvetica,Arial,sans-serif',
        'font-weight': 'normal',
        'font-size': '30px',
        'line-height': '40px',
        'color': '#333'}},
    header2: {block: 'h2', styles: {
        'font-family': '"Helvetica Neue",Helvetica,Arial,sans-serif',
        'font-weight': 'normal',
        'font-size': '20px',
        'line-height': '30px',
        'color': '#333'}}
},

这实现了我通过将样式嵌入生成的 HTML 元素中来实现我的预期。但是使用我不理解的自定义格式时,行为发生了一些变化。

使用默认块格式时,当内容为空时以及创建新块时,默认情况下会选择"段落"。对于自定义格式,它不会选择默认块格式,因此默认设置是没有我的自定义样式。我希望normal是默认值。我怎样才能做到这一点?

这可能已经

很晚了,但我想我能够以适合您的方式做到这一点。希望有人觉得这有用。

(使用微小MCE:4.3.13)

在我的情况下,我在模态中显示了一个微小的MCE实例。模态可用于创建或编辑文本,然后将其作为 html 保存到数据库中。我遇到的问题是在创建新的文本实例时,默认情况下会放入一个 p 标签(假设您添加一些内容),该标签不反映他们正在查看的当前样式。稍后,我需要将此 html 渲染为图像,因此当我渲染它时,样式必须存在于标签上,并且"格式"对象不会影响它,因为用户尚未通过 UI 选择它。然后,用户可以创建在图像中以不同方式显示的结果 html,因为呈现的 Web-Kit 没有正确的 css,因此只是渲染其默认值。

因此,要强制它显示初始样式(字体大小和字体系列是我关心的问题),您可以简单地设置编辑器的初始内容。如果没有可供编辑的 html,我会在向用户显示模态之前执行此操作。

tinymce.activeEditor.setContent('<p><span style="font-family: arial; font-size: 8pt;">&nbsp;</span></p>');

当然,可以先检查浏览器版本,以确保您设置了可接受的值。

希望这有帮助。

[更新]*这是一个失败!编辑器将呈现默认字符,并将光标放在焦点之后。这会导致设计上的错误编辑。(想象一下,我在文本上强加了默认的"下划线"样式)

因为我创建了一个空格,所以带下划线的空间现在会出现在编辑器中。如果用户点击退格键来删除该空间,则可以。 但是,如果用户再次点击退格键,则会删除格式。这不是修复程序。

要修复它,您需要将 tiny 设置为不验证 html。不幸的是,它不会呈现出色的 html。您无法切换验证。我认为这种情况应该改变。我们需要能够仅将内容注入为样式。我会做一张票。

https://github.com/tinymce/tinymce/issues/3126