这些是 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,拼写检查可能会创建无效的选区。

以前,当文档的第一个元素被设置为 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) 的体验,使其与 accessibility 最佳实践不一致。

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

在图像修复对话框中自动建议来自现有 alt、aria-label 和 title 属性的 alt 文本,并优先回退。

在 Accessibility Checker 的先前版本中,图像修复对话框仅提议 alt 中的值,忽略了 aria-label 和 title,这迫使用户手动输入,拖慢了 accessibility 修复速度,同时增加了描述不一致的风险。

TinyMCE 8.1 现在使用基于优先级的回退机制自动建议 alt 文本,按顺序检查现有属性:aria-labelledby、aria-label、alt,然后是 title,如果都没有则留空。这确保了用户可以通过利用现有的无障碍属性更快、更准确地标记图像,提高修复效率和一致性。

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

Revision History

TinyMCE 8.1 版本包含 Revision History 高级插件的配套版本。

Revision History 包括以下修复和改进。

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

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

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

默认头像现在基于 user_id 以一致的颜色生成

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

有关 Revision History 插件的信息,请参阅:Revision History。

Comments

TinyMCE 8.1 版本包含 Comments 高级插件的配套版本。

Comments 高级插件包括以下修复和改进。

默认头像生成不一致

以前,TinyMCE 在 Comments 插件中不一致地生成默认头像。没有头像的用户在提及下拉列表中看到相同的占位头像,而同一用户在其他上下文中可能收到不同的默认头像。这种不一致使得难以区分用户,有时还通过使单个用户显示为两个不同的人而造成混淆。在 8.1 中,此问题已修复,现在默认头像基于 user_id 以稳定的颜色一致地生成。这确保了同一用户始终具有相同的默认头像,提高了清晰度并提供更可靠的用户体验。

在 Comments 下拉列表中插入 @Mention 时的键盘导航改进

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

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

有关 Comments 插件的信息,请参阅:Introduction to Tiny Comments。

Mentions

TinyMCE 8.1 版本包含 Mentions 高级插件的配套版本。

Mentions 高级插件包括以下改进。

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

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

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

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

AI Assistant

TinyMCE 8.1 版本包含 AI Assistant 高级插件的配套版本。

AI Assistant 包括以下修复。

AI Assistant 插件对话框预览现在遵守 content_security_policy 编辑器选项

以前,AI Assistant 插件对话框预览不遵守 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。

改进

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 以不同的格式选项检索内容。
// 禁用缩进
tinymce.get(0).getContent({ indent: false });

// 使用命名实体进行序列化
tinymce.get(0).getContent({ indent: false, entity_encoding: 'named' });

// 使用数字实体进行序列化
tinymce.get(0).getContent({ indent: false, entity_encoding: 'numeric' });

// 将核心实体序列化为命名实体,其他为数字实体
tinymce.get(0).getContent({ indent: false, entity_encoding: 'named+numeric' });

// 输出原始字符
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 级),特别是“可悬停”要求。

Bug 修复

TinyMCE 8.1 还包括以下 bug 修复:

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 bug,确保在可编辑元素之间实现更顺畅、更一致的键盘导航。

选择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包含以下弃用项<s>:

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插件结合使用,以防止文档元数据和属性丢失。