这些是 Tiny Cloud 和 TinyMCE Enterprise 的发行说明。如需了解 TinyMCE 最新社区版本的信息,请参阅 TinyMCE Changelog。

概述

TinyMCE 8.1 已于 2025 年 9 月 17 日(星期三)面向 TinyMCE Enterprise 和 Tiny Cloud 发布。本发行说明概述了 TinyMCE 8.1 的变更内容,包括:

  • 新增 Premium 插件

  • 配套的 Premium 插件变更

  • 改进

  • 变更

  • Bug 修复

  • 弃用

  • 已知问题

新增 Premium 插件

以下新增 Premium 插件随 TinyMCE 8.1 一同发布。

Full Page HTML

新增的 Premium 插件 Full Page HTML 可全面控制文档元数据与属性。它允许用户通过直观的对话框界面编辑 HTML 文档元数据,例如 title、keywords 和 description。与 code 插件配合使用时,还可在源代码视图中展示完整的 HTML 结构,包括 <head>、<body> 以及各类 meta 标签。

有关 Full Page HTML 插件的信息,请参阅 Full Page HTML。

配套 Premium 插件变更

以下 Premium 插件更新随 TinyMCE 8.1 一同发布。

Spell Checker

TinyMCE 8.1 版本包含配套发布的 Spell Checker Premium 插件。

Spell Checker Premium 插件包含以下修复。

当文档首个元素为 noneditable 时,Spell Checker 可能会创建无效选区。

此前,当文档首个元素被设置为 contenteditable="false"(CEF)元素时,使用 TinyMCE spellchecker 全选内容可能会导致无效选区状态。该问题会阻止删除整个内容选区,在极端情况下会中断正常编辑工作流。

为解决此问题,TinyMCE 现会在此类场景下于初始 CEF 元素之前插入一个临时隐藏元素。此调整确保全选操作有效,且能按预期删除所选内容。

有关 Spell Checker 插件的信息,请参阅:Spell Checker。

Media Optimizer (Powered by Uploadcare)

TinyMCE 8.1 版本包含配套发布的 Media Optimizer (Powered by Uploadcare) Premium 插件。

Media Optimizer (Powered by Uploadcare) 包含以下修复。

图像预览有时会显示 srcset 中的错误图像。

在 Media Optimizer Premium 插件的早期版本中,存在一个问题:图像效果基于主 src 而非当前生效的 srcset URL 应用。当从 srcset 选择显示图像时会产生差异,导致调整预览(基于主 src 渲染)与编辑器中显示的图像(基于 srcset URL 渲染)不匹配,造成 blur 或 resize 等效果的视觉呈现不同。

TinyMCE 8.1 通过使用 currentSrc 属性生成预览解决了此问题,确保预览与编辑器中的图像引用同一资源。因此,预览图像与编辑器中的图像现已保持一致。

有关 Media Optimizer Powered by Uploadcare 插件的信息,请参阅:Media Optimizer (Powered by Uploadcare)。

Accessibility Checker

TinyMCE 8.1 版本包含配套发布的 Accessibility Checker Premium 插件。

Accessibility Checker 包含以下改进。

alt 文本长度错误消息现显示当前字符数与最大允许字符数

在 Accessibility Checker 的早期版本中,alt 文本长度验证错误仅显示当前字符数,例如“当前 151 个字符”,而未标明最大允许长度。这导致用户指导不清晰,并对所有依赖长度验证的图像规则(I1–I4)造成负面影响,与无障碍最佳实践不一致。

在 TinyMCE 8.1 中,Accessibility Checker 的错误消息已更新为同时显示当前字符数与最大允许字符数,例如:“151 个字符(最大允许 150 个)”。此改进提供了清晰、可操作的错误提示,符合无障碍指导原则,并减少了所有受影响规则的用户困惑。

在图像修复对话框中,基于现有 alt、aria-label 和 title 属性自动建议 alt 文本,并提供优先级回退机制。

在 Accessibility Checker 的早期版本中,图像修复对话框仅建议 alt 属性值,忽略 aria-label 和 title,导致用户需手动输入,减缓了无障碍修复进程,并增加了描述不一致的风险。

TinyMCE 8.1 现在可以自动建议 alt 文本,采用基于优先级的回退机制,按顺序检查现有属性 aria-labelledby、aria-label、alt 和 title,若均不存在则使字段留空。这使得用户能够利用现有无障碍属性,更快更准确地标记图像,从而提高修复效率和一致性。

有关 Accessibility Checker 插件的信息,请参见:Accessibility Checker。

修订历史

TinyMCE 8.1 版本包含 修订历史 高级插件的配套发布。

修订历史 包含以下修复和改进。

同一用户可能收到两个不同的默认头像

在修订历史的先前版本中,同一用户可能收到两个不同的默认头像。这种不一致可能导致单个用户显示为两名不同的贡献者,在查看修订日志时造成混淆。

在 TinyMCE 8.1 中,该问题已得到解决,现在每个用户将始终被分配相同的默认头像,提高了修订历史显示的准确性和一致性。

默认头像现在根据 user_id 以一致的颜色生成

默认头像现在根据 user_id 一致地生成,确保为用户的头像分配可靠且可预测的颜色。这一改进在修订历史中识别贡献者时提供清晰的视觉一致性,增强了用户体验。

有关 修订历史 插件的信息,请参见:修订历史。

评论

TinyMCE 8.1 版本包含 评论 高级插件的配套发布。

评论 高级插件包含以下修复和改进。

默认头像生成不一致

之前,TinyMCE 在 Comments 插件中不一致地生成默认头像。无头像的用户在提及下拉列表中看到相同的占位头像,而同一用户在其他上下文中也可能收到不同的默认头像。这种不一致使用户难以区分,在某些情况下,使单个用户显示为两个人,造成混淆。在 8.1 版本中,该问题已修复,默认头像现在根据 user_id 以稳定的颜色一致地生成。这确保了同一用户始终具有相同的默认头像,提高了清晰度,提供了更可靠的用户体验。

插入 @Mention 时评论下拉列表中的键盘导航得到改进

之前,在评论卡片内输入 @ 打开提及下拉列表时,不支持 Shift+Enter 键盘组合。例如,当输入 @ + 导航到所选评论卡片中的用户时,按下 Shift+Enter 不会将 @mention 插入到评论正文的 <textarea> 中。

在 TinyMCE 8.1 中,该问题已通过将 Shift+Enter 的处理方式与常规 Enter 键一致得到解决,确保在评论卡片中的 @mentions 下拉列表中选择项目时键盘交互一致且可预测。

有关 评论 插件的信息,请参见:Tiny Comments 简介。

提及

TinyMCE 8.1 版本包含 提及 高级插件的配套发布。

提及 高级插件包含以下改进。

无头像的用户现在在提及下拉列表中显示头像占位符

之前,提及下拉列表未能正确处理用户缺少个人资料头像的情况,导致用户界面视觉不一致且不清晰。这影响了可用性,使区分无头像用户和资料信息不完整或损坏的用户变得更加困难。

在 TinyMCE 8.1 中,该问题已得到解决。现在,TinyMCE 为无头像用户提供默认头像占位符,确保使用提及下拉列表时体验一致且精致。

有关 提及 插件的信息,请参见:提及。

AI 助手

TinyMCE 8.1 版本包含 AI 助手 高级插件的配套发布。

AI 助手 包含以下修复。

AI 助手插件对话框预览现在遵循 content_security_policy 编辑器选项

之前,AI 助手插件对话框预览未遵循 content_security_policy 编辑器选项,导致对加载外部资源(如图像)的控制受限。

在 TinyMCE 8.1 中,对话框预览现在在提供配置的情况下应用配置的内容安全策略,确保根据编辑器的安全设置限制外部资源。这一改进增强了一致性,加强了安全性,并使插件符合 TinyMCE 中用户定义的策略。

有关 AI Assistant 插件的信息,请参阅:AI Assistant,或有关 content_security_policy 选项的信息,请参阅 Content Security Policy。

Suggested Edits

TinyMCE 8.1 版本包含了相应的 Suggested Edits 高级插件的发布。

Suggested Edits 包含以下修复和改进。

为 Suggested Edits 插件添加了键盘导航功能

Suggested Edits 插件的初始版本不支持键盘导航,这限制了依赖键盘交互的用户的可访问性。这种限制使得用户在使用鼠标时很难在建议编辑侧边栏和卡片之间移动和交互。为了提高可用性和可访问性,在 Suggested Edits 插件中实现了键盘导航。现在,用户可以使用键盘有效地导航并与插件交互。

空编辑器操作有时显示为已修改而不是添加/删除

以前,空编辑器操作有时错误地显示为修改而不是添加或删除。这种行为引起了混淆,因为看起来为空的编辑器仍然可以显示“已修改”状态。

为了解决这个问题,现在不再发送空内容。当编辑器为空或变为空时,整个状态现在正确地表示为已添加或已删除。这一改进确保了变更跟踪更加清晰和准确,减少了编辑器无内容时的混淆。

有关 Suggested Edits 插件的信息,请参阅:Suggested Edits。

改进

TinyMCE 8.1 还包括以下改进:

editor.getContent() 现在包含 indent 和 entity_encoding 属性,以控制 HTML 格式

以前,在使用 TinyMCE 的 getContent API 时,诸如 indent 和 entity_encoding 之类的选项在调用期间无法被覆盖。编辑器总是应用其初始配置,这限制了检索内容时的灵活性。这意味着集成者被限制为使用初始化时设置的默认值,无法根据每次调用调整格式行为。

在 TinyMCE 8.1 中,getContent API 得到了增强,支持对 indent 和 entity_encoding 进行每次调用的覆盖。现在,无论编辑器的默认配置如何,都可以在调用 getContent 时直接指定这些选项。这一改进使开发人员能够更好地控制输出格式,从而能够根据不同的用例进行定制的内容检索。

示例:如何使用 getContent API 以不同的格式选项检索内容。
// Disable indentation
tinymce.get(0).getContent({ indent: false });

// Serialize using named entities
tinymce.get(0).getContent({ indent: false, entity_encoding: 'named' });

// Serialize using numeric entities
tinymce.get(0).getContent({ indent: false, entity_encoding: 'numeric' });

// Serialize core entities as named, others as numeric
tinymce.get(0).getContent({ indent: false, entity_encoding: 'named+numeric' });

// Output raw characters
tinymce.get(0).getContent({ indent: false, entity_encoding: 'raw' });

或者

配置编辑器以使用命名实体编码并禁用缩进的示例。
tinymce.init({
  selector: "textarea",
  entity_encoding: 'named', // 或 'numeric' 或 'raw'
  indent: false, // 或 true
});

有关 getContent API 的更多信息,请参阅 getContent()。

当选择不在屏幕上时,点击不可选择的元素不再滚动到选择位置

以前,存在一个问题:点击编辑器的水平滚动条(这是一个“不可选择”的 UI 元素)会隐式地聚焦编辑器,将光标放在内容的开头,然后垂直滚动文档到该光标位置,导致页面滚动远离用户的当前视图。

TinyMCE 8.1 解决了这个问题。现在,当用户点击不可选择的元素(如滚动条)时,编辑器避免获取焦点,从而防止意外的垂直滚动。

变更

TinyMCE 8.1 还包括以下变更:

现在,悬停时工具提示可以保持打开状态

以前,当光标从工具栏按钮移动到工具提示时,工具提示会消失,导致用户无法保持工具提示打开以供参考。这种行为影响了可访问性,使得依赖工具提示进行扩展阅读或导航的用户感到困难。在 8.1 版本中,TinyMCE 已更新为允许工具提示接受鼠标事件。这确保了工具提示在悬停时保持可见,通过允许用户保持工具提示打开直到他们移开光标,从而提高了可访问性和可用性。

这一改进符合 WCAG 2.1 成功标准 1.4.13:悬停或聚焦时的内容(AA 级),特别是“可悬停”要求。

错误修复

TinyMCE 8.1 还包括以下错误修复:

NVDA 会多次宣布 iframe_aria_text

此前,在某些浏览器中,使用 NVDA 或 JAWS 等屏幕阅读器时,iframe_aria_text 要么完全不被播报,要么被播报两次,这给依赖辅助技术的用户带来了不一致且可能造成混淆的行为。为解决此问题,通过调整标签的应用方式,已将该行为标准化:

  • 在 Firefox 中,title 属性现在直接设置在 iframe 元素上,而不再使用 body 上的 aria-label。

  • 而在其他浏览器中,aria-label 会应用到 iframe 内部的 body 上,而不会设置 iframe 的 title 属性。

因此,iframe_aria_text 现在可在所有支持的浏览器中一致地被播报一次。

有关详细信息,请参阅:iframe_aria_text。

使用 Command (CMD) + Backspace 不会保留行内格式。

此前,在行尾使用 Command (CMD) + Backspace 会删除整行且不保留行内格式,这与三击选中该行并按 Backspace 的行为不同。这种不一致导致了混淆,因为不同的删除方法会产生不同的结果。

在 8.1 版本中,Command (CMD) + Backspace 的行为已更新,以匹配其他删除方法,确保行内格式得以保留。

在 Firefox 中,无法使用键盘在 contenteditable="true" 的元素之间导航。

在 TinyMCE 8.1 中,存在一项 Firefox 特有的限制,导致在使用键盘导航时,无法在可编辑元素之间移动光标。光标会被困在 figcaption 内,从而阻止使用向下箭头键进行垂直导航,并使用户无法移动到下一个元素。

该问题影响了依赖键盘交互的 Firefox 用户的无障碍访问性和编辑流程。为解决此问题,引入了一个新的光标导航模块,并将其集成到 Firefox 特有的箭头键处理逻辑中。该解决方案通过编程方式将光标从受阻状态移出,规避了一个长期存在的 Firefox 错误,从而确保了在可编辑元素之间实现更流畅、一致的键盘导航。

选中 figure 后,光标移动不正确。

在 TinyMCE 的早期版本中,选中 figure 后使用 TAB 键将焦点移至 figcaption 元素时,会导致编辑器进入一种异常状态:虽然光标显示在 figcaption 内,但键入内容不会产生任何可见结果。该问题导致用户无法仅通过键盘编辑 figcaption,迫使他们依赖鼠标或其他定点设备进行修改。

在 TinyMCE 8.1 中,此 bug 已修复,确保现在可以仅通过键盘导航无缝编辑 figcaption,从而提高了无障碍访问性和整体编辑效率。

使用 &amp; 编码插入的链接现在会在插入前解码为 &

此前,将包含编码后 & 符号 &amp; 的 URL 粘贴到 TinyMCE 时,编码值会被保留,导致链接插入到内容中时出现双重编码。例如,粘贴的链接如

https://example.com/search?&amp;query=example

在编辑器源代码中会显示为

https://example.com/search?&amp;amp;query=example

这在打开此类链接时会导致问题,因为 URL 会失效。在 8.1 版本中,TinyMCE 现在会在插入链接前自动将 &amp; 解码回 &,确保粘贴的 URL 在编辑器和源代码中都保持有效且可用。

已弃用

TinyMCE 8.1 包含以下弃用项:

content_css_cors 配置选项已被弃用

从 TinyMCE 8.1 起,content_css_cors 配置选项已被标记为已弃用。该选项将在即将发布的 TinyMCE 9.0 版本中被完全移除。作为替代,我们建议使用 crossorigin。

已知问题

本节介绍了 TinyMCE 8.1 用户可能遇到的问题以及针对这些问题的可能变通方法。

TinyMCE 8.1 中存在一个已知问题。

Full Page HTML 插件与 Suggested Edits 及 Revision History 不兼容

Full Page HTML 插件允许设置文档属性和元数据。然而,Suggested Edits 和 Revision History 无法识别这些内容,并且在这些插件中执行的操作会覆盖由 Full Page HTML 插件设置的值。

变通方法:避免将 Full Page HTML 插件与 Suggested Edits 或 Revision History 插件结合使用,以防止文档元数据和属性丢失。