这是 Tiny Cloud 和 TinyMCE Enterprise 的版本说明。有关 TinyMCE 最新社区版本的信息,请参阅 TinyMCE 更新日志。

概述

TinyMCE 8.1 于 2025年9月17日星期三发布,适用于 TinyMCE Enterprise 和 Tiny Cloud。本版本说明概述了 TinyMCE 8.1 的变更内容,包括:

  • 新增 Premium 插件

  • 配套的 Premium 插件变更

  • 改进

  • 变更

  • 缺陷修复

  • 弃用

  • 已知问题

新增 Premium 插件

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

Full Page HTML

新的 Premium 插件 Full Page HTML 提供了对文档元数据和属性的全面控制。它允许用户通过直观的对话框界面编辑 HTML 文档元数据,如标题、关键词和描述。当与 code 插件结合使用时,它还可以在源代码视图中显示完整的 HTML 结构,包括 <head>、<body> 和各种 meta 标签。

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

配套的 Premium 插件变更

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

拼写检查器

TinyMCE 8.1 版本包含配套发布的 拼写检查器 Premium 插件。

拼写检查器 Premium 插件包含以下修复。

如果文档的第一个元素是 noneditable,拼写检查可能会创建无效的选择。

此前,当文档的第一个元素被设置为 contenteditable="false" (CEF) 元素时,使用 TinyMCE 拼写检查器选择所有内容可能会导致无效的选择状态。此问题阻止了删除整个内容选择,造成了一个干扰正常编辑工作流的边缘情况。

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

有关 拼写检查器 插件的信息,请参阅:拼写检查器。

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 渲染)不匹配,从而在模糊或缩放等效果上产生不同的视觉结果。

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

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

无障碍检查器

TinyMCE 8.1 版本包含配套发布的 无障碍检查器 Premium 插件。

无障碍检查器 包含以下改进。

alt 文本长度错误消息现在显示当前和最大字符数

在先前版本的 无障碍检查器 中,alt 文本长度验证错误仅显示当前字符数,例如“当前 151 个字符”,而未指示允许的最大长度。这导致为用户提供的指导不清晰,并对所有依赖长度验证的图像规则(I1–I4)的体验产生了负面影响,使其与无障碍最佳实践不一致。

在 TinyMCE 8.1 中,无障碍检查器 的错误消息已更新,将同时显示当前和最大字符数,例如:“151 个字符(最多允许 150 个)。”这一改进提供了清晰、可操作的错误消息,符合无障碍指南,并减少了所有受影响规则上的用户困惑。

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

在先前版本的 无障碍检查器 中,图像修复对话框仅提议来自 alt 的值,忽略了 aria-label 和 title,这迫使用户手动输入,减缓了无障碍修复速度,并增加了描述不一致的风险。

TinyMCE 8.1 现在使用基于优先级的回退机制自动建议 alt 文本,该机制按顺序检查现有属性 aria-labelledby、aria-label、alt 和 title,如果都不存在,则将该字段留空。这样可以确保用户通过利用现有的 accessibility 属性更快且更准确地为图像添加标签,提高修复效率和一致性。

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

Revision History

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

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

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

在 Revision History 的先前版本中,同一用户可能会收到两个不同的默认头像。这种不一致性可能会使单个用户看起来像两个不同的贡献者,在查看修订日志时造成混淆。

在 TinyMCE 8.1 中,该问题已得到解决,每个用户现在总是被分配相同的默认头像,从而提高了 revision history 显示的准确性和一致性。

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

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

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

Comments

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

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

默认头像生成不一致

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

在 Comments 下拉菜单中插入 @Mention 时改进了键盘导航

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

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

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

Mentions

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

Mentions Premium 插件包括以下改进。

没有头像的用户现在在 mentions 下拉菜单中显示头像占位符

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

在 TinyMCE 8.1 中,该问题已得到解决。现在,TinyMCE 为没有头像的用户提供默认头像占位符,确保在使用 mentions 下拉菜单时具有一致且完善的体验。

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

AI Assistant

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

AI Assistant 包括以下修复。

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

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

在 TinyMCE 8.1 中,如果提供了配置的 content security policy,对话框预览现在会应用该策略,确保根据编辑器的安全设置限制外部资源。这一改进提高了一致性,增强了安全性,并使插件与 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 以不同的格式选项检索内容。

// 禁用缩进
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 还包括以下变更:

提示框(Tooltip)现在在鼠标悬停时可以保持打开

以前,当光标从工具栏按钮移动到提示框时,提示框会消失,阻止用户保持提示框打开以供参考。此行为影响了可访问性,使依赖提示框进行扩展阅读或导航的用户感到困难。在 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 中,此错误已修复,确保现在可以仅通过键盘导航无缝编辑 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 插件结合使用,以防止文档元数据和属性的数据丢失。