以下是 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 文档的元数据,如标题、关键字和描述。与 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 拼写检查器选择全部内容可能会导致无效的选区状态。该问题致使无法删除整个内容选区,形成了破坏正常编辑工作流的边缘情况。
为解决此问题,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 渲染)不匹配,从而导致模糊或缩放等效果的视觉呈现不同。
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 版本包含 Revision History 高级插件的配套发布。
Revision History 包含以下修复和改进。
同一用户可能收到两个不同的默认头像
在旧版的 Revision History 中,同一用户可能收到两个不同的默认头像。这种不一致会导致单个用户看起来像两个不同的贡献者,在查看修订日志时会造成混淆。
在 TinyMCE 8.1 中,此问题已得到解决,现在每个用户始终被分配相同的默认头像,从而提高了修订历史显示的准确性和一致性。
现在根据 user_id 生成具有一致颜色的默认头像
现在使用 user_id 一致地生成默认头像,确保为用户的头像分配可靠且可预测的颜色。这一改进提高了用户体验,在修订历史中识别贡献者时提供了清晰的视觉一致性。
有关 Revision History 插件的信息,请参阅:Revision History。
评论
TinyMCE 8.1 版本包含 Comments 高级插件的配套发布。
Comments 高级插件包含以下修复和改进。
默认头像生成不一致
以前,TinyMCE 在 Comments 插件中生成默认头像的方式不一致。没有头像的用户在提及下拉列表中会看到相同的占位头像,而同一用户在其他上下文中可能会收到不同的默认头像。这种不一致使区分用户变得困难,在某些情况下甚至会让人误以为一个用户是两个不同的人。在 8.1 版中,这个问题已得到修复,现在可以根据 user_id 生成具有稳定颜色的默认头像。这确保了同一用户始终拥有相同的默认头像,提高了清晰度并提供了更可靠的用户体验。
在插入 @Mention 时改进了评论下拉列表的键盘导航
以前,在评论卡片中输入 @ 以打开提及下拉列表时,不支持 Shift+Enter 组合键。例如,当输入 @ + 在选择的评论卡片中导航至某个用户后,按 Shift+Enter 不会将 @mention 插入评论正文的 <textarea> 中。
在 TinyMCE 8.1 中,这一问题已得到解决,Shift+Enter 的处理方式与普通的 Enter 键相同,确保了在评论卡片的 @mentions 下拉列表中选择项时的键盘交互一致且可预测。
有关 Comments 插件的信息,请参阅:Tiny Comments 简介。
提及
TinyMCE 8.1 版本包含 Mentions 高级插件的配套发布。
Mentions 高级插件包含以下改进。
没有头像的用户现在在提及下拉列表中显示头像占位符
以前,提及下拉列表没有妥善处理用户没有个人资料头像的情况,导致用户界面视觉上不一致且不清晰。这影响了可用性,使得区分没有头像的用户和头像信息不完整或损坏的用户变得更加困难。
在 TinyMCE 8.1 中,这一问题已得到解决。现在,TinyMCE 为没有头像的用户提供默认头像占位符,确保使用提及下拉列表时的一致和精致体验。
有关 Mentions 插件的信息,请参阅:Mentions。
AI 助手
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。
建议编辑
TinyMCE 8.1 版本包含建议编辑高级插件的配套版本。
建议编辑包含以下修复和改进。
为建议编辑插件添加键盘导航功能
建议编辑插件的初始版本不支持键盘导航,这限制了依赖键盘交互的用户的可访问性。在不使用鼠标的情况下,很难在建议编辑侧边栏和卡片之间移动并与之交互。为了提高可用性和可访问性,已在建议编辑插件中实现键盘导航功能。用户现在可以使用键盘高效地导航并与插件交互。
空编辑器操作有时会显示为已修改而非已添加/已删除
以前,空编辑器操作有时会错误地显示为已修改,而不是已添加或已删除。这种行为会引起混淆,因为看起来为空的编辑器仍可能显示“已修改”状态。
为解决此问题,不再发送空内容。当编辑器为空或变为空时,整个状态现在会正确地表示为已添加或已删除。这一改进确保了更改跟踪更加清晰和准确,减少了编辑器不包含内容时的混淆。
有关建议编辑插件的信息,请参阅:建议编辑。
改进
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', // or 'numeric' or 'raw'
indent: false, // or true
});有关getContent API 的更多信息,请参阅getContent()。
当选择内容不在屏幕上时,点击不可选择的元素不再滚动到选择内容
以前,发现了一个问题:点击编辑器的水平滚动条(一个“不可选择”的用户界面元素)会隐式地聚焦编辑器,将插入点放置在内容的开头,然后垂直滚动文档到该插入点位置,导致页面滚动超出用户的当前视图。
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 bug,从而确保在可编辑元素之间实现更流畅、更一致的键盘导航。
选择 figure 后,光标移动无法正常工作
在 TinyMCE 的早期版本中,选择 figure 后使用 TAB 键将焦点移入 figcaption 元素会导致编辑器进入一种异常状态:光标虽显示在 figcaption 内,但键入内容却无任何可见效果。此问题使用户无法仅通过键盘编辑 figcaption,只能依赖鼠标或其他指向设备进行修改。
在 TinyMCE 8.1 中,此 bug 已修复,确保 figcaption 现在可以通过键盘导航单独进行无缝编辑,从而提高了无障碍性和整体编辑效率。
使用 & 编码插入的链接现在会在插入前解码为 &
此前,当将包含编码字符 & 的 URL 粘贴到 TinyMCE 时,编码值会被保留,导致链接插入到内容中时出现双重编码。例如,粘贴的链接如下所示:
https://example.com/search?&query=example
在编辑器源代码中会显示为:
https://example.com/search?&amp;query=example
这会导致打开此类链接时出现问题,因为 URL 会变为无效状态。在 8.1 版本中,TinyMCE 现在会在插入链接前自动将 & 解码回 &,从而确保粘贴的 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 插件与“建议编辑”及“修订历史”功能不兼容
Full Page HTML 插件允许设置文档属性和元数据。然而,“建议编辑”和“修订历史”功能不会识别这些设置,并且在这些插件中执行的操作会覆盖由 Full Page HTML 插件设置的值。
解决方案:避免将 Full Page HTML 插件与“建议编辑”或“修订历史”插件结合使用,以防止文档元数据和属性的丢失。