这些是 Tiny Cloud 和 TinyMCE Enterprise 的发行说明。有关 TinyMCE 最新社区版本的信息,请参阅 TinyMCE 更新日志。
概述
TinyMCE 8.0.0 于 2025 年 7 月 23 日星期三发布,适用于 TinyMCE Enterprise 和 Tiny Cloud。这些发行说明提供了 TinyMCE 8.0.0 变更的概述,包括:
新的 Premium 插件
配套的 Premium 插件变更
配套的增强版皮肤和图标包变更
改进
新增内容
变更
Bug 修复
已弃用
此版本包含对许可证密钥系统的破坏性变更。所有商业自托管部署都必须更新其许可证密钥,以使用新的
T8LK:前缀格式。有关此内容以及其他破坏性变更的详细信息(在考虑升级时),请参阅 从 TinyMCE 7 迁移到 TinyMCE 8.0.0。
新的 Premium 插件
以下新的 Premium 插件与 TinyMCE 8.0.0 一同发布。
Suggested Edits(建议编辑)
TinyMCE 8.0.0 版本包含配套发布的 Suggested Edits Premium 插件。
Suggested Edits 插件允许多名用户协作处理文档。审阅窗口会显示哪位用户建议了哪些编辑,无论是添加、删除、修改还是替换了任何内容,并允许用户对这些建议提供反馈,或通过接受或拒绝这些建议来进行最终审阅。
有关 Suggested Edits 插件的信息,请参阅:Suggested Edits。
配套的 Premium 插件变更
以下 Premium 插件更新与 TinyMCE 8.0.0 一同发布。
Mentions(提及)
TinyMCE 8.0.0 版本包含配套发布的 Mentions Premium 插件。
Mentions Premium 插件包含以下修复和移除内容。
暗色模式下,Mentions 用户名未随皮肤更改而更新
以前,在切换皮肤时,提及卡片上显示的用户名未正确更新,尤其是在暗色模式下。此问题导致用户名在深色背景下不可见,使用户难以阅读。
为解决此问题,已更新用户名的样式。该类现在使用 @text-color 变量进行默认样式设置,确保当项目处于活动状态时,能从其父元素继承正确的颜色。此更改保证了用户名在浅色和深色主题中都保持可见且可读。
移除了 Mentions 插件中未使用的样式表
在 8.0.0 版本中,Mentions 插件中未使用的 mentions.css 文件已被移除。在早期版本(如 7.9)中,尽管其内容已在之前的更新中移至 Oxide 主题,但该空 CSS 文件仍被加载。此更改确保了更简洁的资源加载,并避免了不必要的网络请求。
此次移除不影响插件功能,且适用于所有编辑器模式。
有关 Mentions 插件的信息,请参阅:Mentions。
Spell Checker(拼写检查器)
TinyMCE 8.0.0 版本包含配套发布的 Spell Checker Premium 插件。
Spell Checker Premium 插件包含以下修复和改进。
带有 lang 属性的内容有时无法正确进行拼写检查。
以前,拼写检查器无法一致地处理带有不同 lang 属性的内容,尤其是当语言代码使用不同格式时。这种不一致导致在使用备用大小写或分隔符约定的 span 元素中的单词被漏检(例如 en-GB 与 en_GB)。
此问题是在 TinyMCE 6.4 中引入的,当时包含混合格式语言代码的文档无法可靠地进行拼写检查。结果,尽管在 6.3 版本中功能正常,但使用备用大小写或分隔符约定的 span 元素中的拼写错误单词未被检测到。
在 8.0.0 版本中,恢复了对混合大小写和混合格式语言代码的支持。拼写检查器现在能正确识别并处理语言属性格式的变化,确保无论代码样式如何,内容都能得到可靠检查。此改进使得包含多种语言和不同区域约定的文档能够进行准确的拼写检查。
屏幕阅读器未播报拼写错误单词的输入标签。
在之前的版本中,拼写检查器对话框的拼写错误单词输入字段缺少适当的无障碍标签,导致屏幕阅读器无法播报其用途。TinyMCE 8.0.0 通过在“拼写错误单词”文本与其输入字段之间添加适当的标签关联,解决了此无障碍性限制。这一增强使屏幕阅读器能够正确识别并播报输入字段的用途,从而改善了依赖辅助技术用户的拼写检查体验。
语言代码标准化为 RFC5646/BCP47 格式
TinyMCE 8.0.0 版本引入了对使用 RFC5646(也称为 BCP47)格式的语言代码的标准化支持。此更新适用于所有与语言相关的配置,包括:
UI 语言包(Premium 和社区版)
拼写检查器语言代码
HTML
lang属性内容语言选择
更改
语言代码现在使用连字符 (
-) 而不是下划线 (_)。例如:'en-US'而不是'en_US''zh-TW'而不是'zh_TW''pt-BR'而不是'pt_BR'
不含地区的基本语言代码(例如,
'en'、'es'、'fr')保持不变。语言包的文件名已更新为使用连字符。
高级插件已更新,以识别符合 RFC5646 标准的代码。
向后兼容性
为确保迁移顺利
TinyMCE 8.0.0 中支持连字符和下划线两种格式。
当使用旧的下划线格式时,会显示控制台警告。
TinyMCE 8.0.0 同时分发两种格式的语言包文件。
TinyMCE 9 将仅支持符合 RFC5646 标准的连字符格式。
迁移
更新
tinymce.init中与语言相关的配置:language: 'en-US', spellchecker_language: 'en-US'
更新
content_langs配置:content_langs: [ { title: 'English (US)', code: 'en-US' }, { title: 'Portuguese (Brazil)', code: 'pt-BR' } ]重命名所有自定义词典文件,使用连字符(例如,
'en-GB.txt'而不是'en_GB.txt')。确保任何服务器端集成或自定义语言包文件遵循新的命名约定。
这种标准化使 TinyMCE 与现代 Web 标准保持一致,并提高了其多语言功能的一致性。
有关 Spell Checker 高级插件的信息,请参见:Spell Checker plugin 或有关支持的完整语言列表,请参见:Supported languages。
Accessibility Checker
TinyMCE 8.0.0 版本包括 Accessibility Checker 高级插件的配套版本。
Accessibility Checker 高级插件包括以下改进。
Accessibility: a11ychecker 插件中增强图像可访问性检查
TinyMCE 8.0.0 在 a11ychecker 插件中引入了四条新的图像可访问性规则 (Image rules),以提高合规性和创作指导。这些规则有助于识别与图像使用相关的常见可访问性问题并提供可操作的建议:
I1: Mixed Signals & Decorative Policy:标记具有冲突的可访问性指示器的图像(例如,
alt带有role="presentation"),并确保装饰性图像符合最佳实践。I2: Alt Attribute Requirement:强制所有
<img>元素上存在alt属性,无论是否有其他标签机制(如aria-label、aria-labelledby或title)。I3: Filename Detection:当
alt文本看起来像文件名(例如,image123.jpg)时发出警告,包括 URL 编码的情况。I4: Alt Text Length:检测超过可配置最大长度的
alt文本,以促进简洁的描述。默认限制为 150 个字符,可以通过新的a11ychecker_alt_text_max_length设置进行调整。
其他改进包括规则优先级系统以避免重复违规、集中式图像意图检测(例如,装饰性、信息性、混合信号、不完整)以及更易读的用户界面消息。诸如“替代文本”之类的技术术语已被替换为“文本描述”,并且修复说明现在更具上下文相关性且更易于用户理解。
Accessibility Checker 的 alt 文本长度新的 a11ychecker_alt_text_max_length 配置选项
Accessibility Checker 插件中新增了一个配置选项 a11ychecker_alt_text_max_length。该选项允许用户配置图像 alt 文本描述的最大允许长度。默认值为 150 个字符。例如:
tinymce.init({
selector: 'textarea',
plugins: 'a11ychecker',
a11ychecker_alt_text_max_length: 150 // 设置最大长度为 150 个字符
});有关 Accessibility Checker 插件的更多信息,请参见:Accessibility Checker。
PowerPaste
TinyMCE 8.0.0 版本包括 PowerPaste 高级插件的配套版本。
带有“较轻”级别的列表的 Word 导入解析失败。
当用户将包含使用 Word 的“No List”样式设置的列表的 Microsoft Word 文档内容粘贴到启用了 PowerPaste 的编辑器中时,由于解析错误,操作会失败。结果导致内容无法插入编辑器,从而干扰了内容工作流程。TinyMCE 8.0.0 通过更新 PowerPaste 解析器以正确处理带有“No List”样式的列表解决了这一问题。因此,用户现在可以成功将此类内容粘贴到编辑器中,而不会遇到错误。
有关 PowerPaste 插件的信息,请参见:PowerPaste。
Comments
TinyMCE 8.0.0 版本包含随附发布的 Comments 高级插件。
Comments 高级插件包括以下移除项。
移除未使用的 Comments 样式表
在 8.0.0 版本中,从 Comments 插件中移除了未使用的 tinycomments.css 文件。在早期版本(如 7.9)中,尽管此空 CSS 文件的内容已在之前的更新中移至 Oxide 主题,但仍被加载。此更改确保更简洁的资源加载并避免不必要的网络请求。
有关 Comments 插件的信息,请参见:Tiny Comments 简介。
随附的 Enhanced Skins & Icon Packs 更改
TinyMCE 8.0.0 版本包含随附的 Enhanced Skins & Icon Packs 发布。
Enhanced Skins & Icon Packs
Enhanced Skins & Icon Packs 发布包括以下更新:
Enhanced Skins & Icon Packs 已重建,以纳入也集成到 TinyMCE 8.0.0 默认皮肤 Oxide 中的更改。
有关使用 Enhanced Skins & Icon Packs 的信息,请参见:Enhanced Skins & Icon Packs。
改进
TinyMCE 8.0.0 还包括以下改进:
增强的跨域资源处理
添加了新的基于函数的 crossorigin 配置选项,提供了对跨域资源加载的细粒度控制。该函数接收资源 URL 和类型(script 或 stylesheet)作为参数,并可返回 'anonymous'、'use-credentials' 或 undefined 以控制 crossorigin 属性。
示例:为脚本设置 crossorigin="anonymous"。
<script src="https://cdn.tiny.cloud/1/no-api-key/tinymce/8/tinymce.min.js" referrerpolicy="origin" crossorigin="anonymous"></script>
或;
示例:设置可复用的常量函数。
const crossOriginFunction = (url, resourceType) => {
// 在此返回 'anonymous' 或 'use-credentials' 将显式设置属性
return 'anonymous';
// return 'use-credentials';
// return undefined; // 通过返回 undefined 为所有资源省略 'crossorigin' 属性
};
tinymce.init({
selector: "textarea",
crossorigin: crossOriginFunction
});此改进确保了不同部署场景下一致的资源加载行为,并为脚本和样式表的 CORS 设置提供了更好的控制。
有关详细信息,请参阅 crossorigin 配置选项文档。
工具提示现在可以通过按 escape 键关闭。
在 8.0.0 之前,工具提示无法通过键盘关闭,这引发了无障碍性问题。自 TinyMCE 8.0.0 起,工具提示现在可以通过 escape 键关闭,从而提高了无障碍性。
屏幕阅读器现在会朗读有关如何导航颜色样本、图像选择和插入表格小部件的说明。
以前,颜色样本、创建表格网格和图像选择等交互式元素缺少 aria-label。这导致键盘用户缺乏操作说明,并阻碍了整体无障碍性。
TinyMCE 8.0.0 现在为这些元素包含 aria-labels,提供了清晰的键盘导航说明。此改进确保了所有用户都能获得更易于访问的体验。
调整大小手柄通过 role 和 aria-valuetext 属性更易于访问。
在 TinyMCE 的早期版本中,编辑器的调整大小手柄缺少 role 属性,引发了无障碍性问题。
在 TinyMCE 8.0.0 中,调整大小手柄现在包含一个 role seperator 和一个动态反映编辑器当前尺寸的 aria-valuetext 属性。这些改进增强了无障碍性,并确保屏幕阅读器能更准确地朗读。
焦点现在会在关闭警报、确认或其他对话框后恢复到对话框
以前,当从一个对话框内打开另一个对话框(例如通过 file_picker_callback 触发的文件选择器)时,在关闭次要对话框后,焦点无法正确恢复到原始对话框。此问题也影响了从父对话框内打开的警报和确认对话框。
结果,键盘用户在多对话框工作流程中经历了导航中断和焦点上下文丢失,损害了无障碍性和可用性。
在 8.0.0 中,TinyMCE 现在会在嵌套对话框关闭后,将焦点恢复到父对话框中的触发按钮。此改进增强了涉及多个重叠对话框场景中的键盘导航和无障碍性。
在 ToggleToolbarDrawer 命令中增加了对 skip_focus 选项的支持
ToggleToolbarDrawer 命令现在支持标准的 skip_focus 选项,可以在不聚焦编辑器的情况下打开工具栏抽屉。这与其他编辑器命令保持一致的行为。
skip_focus 选项使用命令:editor.execCommand('ToggleToolbarDrawer', false, null, { skip_focus: true });有关 ToggleToolbarDrawer 命令的更多信息,请参见:可用命令。
分割按钮现在渲染为独立的操作按钮和箭头按钮。
TinyMCE 8.0.0 中的分割按钮现在渲染为两个独立的、可聚焦的组件,而不是一个单一的复合元素。主按钮执行主要操作,而箭头按钮控制下拉菜单。这一设计改进通过允许每个按钮有独立的焦点目标和 ARIA 标签,提升了可访问性。
translate API 现在会自动将连续的三个点替换为省略号字符。
以前,包含三个连续点的菜单项和工具提示(…)会被 JAWS 屏幕阅读器读作“点点点”,这可能会让依赖辅助技术的用户感到困惑。为了提升可访问性,TinyMCE 8.0.0 中的 translate API 现在会自动将所有翻译中的三个点替换为排版省略号字符(…)。这一更新确保了视觉外观的一致性,同时改善了屏幕阅读器的行为,因为省略号字符不会被读出来。该更改直接在翻译函数中实现,确保了对所有语言的全面覆盖。
新增功能
TinyMCE 8.0.0 还包括以下新增功能:
新的 allow_html_in_comments 选项,允许在注释数据中使用类 HTML 内容
出于安全原因,默认情况下,包含类 HTML 内容的注释会从编辑器内容中移除。这是在清理过程中完成的,确保注释中的任何类 HTML 内容都会被删除。
TinyMCE 引入了一个新的配置选项 allow_html_in_comments,让用户可以控制是否保留或移除注释中的类 HTML 内容。默认情况下,出于安全考虑,这些内容会被移除,但将该选项设置为 true 可以在需要时保留注释中的类 HTML 内容。
分割按钮工具提示配置
chevronTooltip 属性为分割按钮的箭头按钮部分提供自定义工具提示文本。当未指定 chevronTooltip 时,TinyMCE 会使用 "{tooltip} menu" 模式自动生成工具提示文本。setTooltip 方法会同时更新主按钮和箭头按钮的工具提示,以保持一致性。
有关更多信息,请参见 分割工具栏按钮。
用于检索和缓存用户详情的新用户查找 API
TinyMCE 8.0.0 引入了一个新的 用户查找 API,使集成能够检索和缓存用户详情(如姓名和头像),并在编辑器中识别当前用户。此 API 在构建依赖用户上下文的功能时特别有用,例如评论系统或显示包含用户信息的元素列表。
用户查找 API 通过内置缓存提供高效的用户数据管理,减少了冗余的网络请求并提高了性能。它可以作为各种插件中 <pluginname>_author 和 <pluginname>_author_avatar 配置的通用解决方案,包括当前支持的插件,如 Suggested Edits、Comments 和 Revision History。
主要功能包括:
当前用户识别:使用新的
user_id配置选项设置和检索当前用户的 ID灵活的用户获取:通过
fetch_users回调函数配置自定义用户数据检索内置缓存:自动缓存用户数据以最小化 API 调用
回退处理:在未提供自定义获取函数时自动生成默认用户信息
可扩展的用户对象:通过
custom属性支持自定义元数据
基本配置
该 API 需要两个主要配置选项:
tinymce.init({
selector: 'textarea',
user_id: 'alextaylor', // 设置当前用户的唯一标识符
fetch_users: (userIds) => {
// 返回一个解析为用户对象数组的 Promise
return Promise.all(
userIds.map(userId =>
fetch(`/users/${userId}`)
.then(response => response.json())
.catch(() => ({ id: userId })) // 请求失败时的回退
)
);
}
});API 使用
配置完成后,该 API 提供两个主要方法:
editor.userLookup.userId- 返回当前用户的 IDeditor.userLookup.fetchUsers(userIds)- 获取并缓存用户信息
editor.on('init', () => {
// 获取当前用户 ID
console.log('Current user:', editor.userLookup.userId);
// 获取多个用户
const users = editor.userLookup.fetchUsers(['user-1', 'user-2']);
// 处理单个用户的 promise
users['user-1'].then(user => {
console.log('User 1 name:', user.name);
});
});如需全面文档和示例,请参阅:用户查找 API。
新增 list_max_depth 选项以限制列表缩进
TinyMCE 8.0.0 引入了新的 list_max_depth 选项,允许配置列表项的最大缩进深度。此设置接受非负整数值,其中 0 允许创建无缩进的列表,更高的值则设置最大允许缩进深度。负值无效,会触发错误。当未设置此选项时,列表行为保持不变。
此设置仅适用于列表缩进,不影响段落缩进。现有内容不会被修改,超过最大缩进深度的粘贴列表将保留其结构,但不能进一步缩进。当选中多个列表项时,只有符合条件的项会被单独缩进——验证针对每个项进行,而不是整个选区。
减少缩进功能不受影响,始终可用。缩进和减少缩进控件的状态会根据此设置反映当前的缩进能力。
配置示例
以下示例展示了 list_max_depth 选项的基本配置,将列表缩进限制为最多 2 级:
tinymce.init({
selector: "textarea",
plugins: [
"advlist", "anchor", "autolink", "charmap", "code", "fullscreen",
"help", "image", "insertdatetime", "link", "lists", "media",
"preview", "searchreplace", "table", "visualblocks",
],
list_max_depth: 2,
toolbar: "undo redo | styles | bold italic underline strikethrough | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image",
});更多信息请参见:用户格式 - 列表最大深度。
变更
TinyMCE 8.0.0 包含以下变更:
增强的许可证密钥系统,采用 T8LK 前缀
TinyMCE 8 的许可证密钥系统已增强,以提供更好的订阅访问控制和简化续订流程。此变更主要影响自托管部署,因为云用户(Tiny Cloud)不需要许可证密钥。
如果您使用 Tiny Cloud,则无需许可证密钥 - 您的云订阅自动包含商业许可证。
对于自托管部署,所有商业许可证密钥必须使用新的
T8LK:前缀格式。现有的 TinyMCE 7 许可证密钥无法通过添加 T8LK 前缀来兼容 TinyMCE 8。
自托管部署的关键变更:
所有商业许可证密钥均需使用新的
T8LK:前缀。无需服务器通信或“phone home”检查
支持基于日期和版本锁定的密钥
简化的混合部署配置
改进了对气隙和离线环境的支持
云部署:
使用 Tiny Cloud 时,仅需 API 密钥 - 无需许可证密钥
您的云订阅自动包含商业许可证
自托管部署:
商业使用:请联系您的客户经理或访问 Tiny Cloud 账户 获取 T8LK 前缀的许可证密钥
GPL 使用:设置
license_key: 'gpl'(不区分大小写)使用高级功能的开源项目:使用组合格式
license_key: 'GPL+T8LK:…'自托管商业部署所需的许可证密钥管理器设置:
要使商业许可证密钥生效,必须正确配置许可证密钥管理器。如果没有此设置,编辑器将无法工作。
示例:在捆绑应用程序中导入许可证密钥管理器
独立托管(例如在
/public文件夹中):licensekeymanager文件夹必须位于plugins文件夹内,与其他所有插件一起。捆绑应用程序:必须导入
licensekeymanager/index.js文件,否则编辑器将处于禁用状态。import 'tinymce/plugins/licensekeymanager';
从 TinyMCE 7 升级
云用户(Tiny Cloud):无需更改许可证密钥 - 只需更新 TinyMCE 版本。
自托管用户:联系您的客户经理获取新的 T8LK 前缀许可证密钥。
有关新许可证密钥系统的更多信息,请参阅:许可证密钥。
使用上下文解析时 DomParser 不再尝试修复某些节点
此前,DomParser 在带上下文解析时(如将内容插入特定元素)会尝试修复无效的 HTML 结构。该行为可能导致意外结果,尤其在父元素上下文中结构本就不合法的情况下。
在 TinyMCE 8.0.0 中,DomParser 已更新,带上下文解析时不再尝试修复无效节点。改为验证节点,仅在其符合父元素上下文要求时才插入。若节点无效,则不会插入。
已移除项
TinyMCE 8.0.0 还包含以下移除内容:
从 Editor 实例中移除了未公开的 documentBaseUrl 属性,现支持使用 documentBaseURI 属性。
此前,Editor 实例可访问未公开的 documentBaseUrl 属性。该属性不属于受支持的公共 API,可能导致跨实现使用时产生混淆或不一致。
为提升 API 清晰度并维护接口规范性,已移除 documentBaseUrl 属性。集成方应使用官方支持的 documentBaseURI 属性访问文档的基 URI。
Bug 修复
TinyMCE 8.0.0 还包含以下 bug 修复:
选中 figure 元素时按 Tab 键无法正确将焦点移至 figcaption 元素。
此前,Tab 键无法正确处理嵌套组件。具体而言,当 CET(Content Editable True)元素位于 CEF(Content Editable False)元素(如 figcaption)内部时,焦点行为不符合直觉。这导致与可编辑嵌套元素(如 figcaption)交互时,键盘导航不一致且令人困惑。
TinyMCE 8.0.0 已解决此问题,确保当 CET 元素嵌套在 CEF 元素内时,按 Tab 键能正确将焦点移至 CET 元素。这保证了 figcaption 等嵌套可编辑元素的键盘导航流畅且可预测。
剪切整个 HTML 元素会添加空段落。
此前发现一个问题:剪切整个块元素(如 div 或 p HTML 元素)会导致该块被替换为空段落。该行为仅发生在非表格内的块元素上,导致表格内外剪切内容的行为不一致。此外,该行为也与退格 delete 操作的行为不符。
TinyMCE 8.0.0 通过统一表格内外内容的剪切行为解决了此问题。更新后的实现使剪切行为与退格 delete 操作保持一致,确保编辑体验更一致、可预测。
代码示例对话框未按预期禁用拼写检查。
此前,browser_spellcheck 设置无法在代码示例对话框的文本区域正确禁用拼写检查。原因是该设置应用于对话框文本区域,而非主编辑器实例。
此外,advcode 和 code 插件对话框也未显式禁用浏览器拼写检查。因此,无论 browser_spellcheck 设置如何,代码内容中都会不必要地出现红色下划线。
在 block 元素(如图片)后直接添加换行会导致错误。
在 TinyMCE 早期版本中,内容选择逻辑错误假设目标元素位于文本节点内。实际上,该元素直接位于 <div> 元素内。这种不匹配导致选中内容被错误地重新插入自身,在图片后立即按 Enter 键时引发错误,并存在数据丢失风险。
TinyMCE 8.0.0 已解决此问题。选择逻辑已更新,可正确识别并处理 <div> 元素内的内容,避免尝试将内容插入自身。因此,在 <div> 元素内的图片后按 Enter 键不会再触发错误或导致意外行为。
内联模式下,按后退按钮会关闭上下文工具栏并将焦点从选中图片移至编辑器。
在内联模式下,上下文表单工具栏错误地将焦点从选中图片移至编辑器容器。导致依赖当前选区应用更改的插件无法将 alt 文本等属性正确应用于目标图片。
TinyMCE 8.0.0 通过确保焦点正确保留解决此问题,使插件在内联模式下能将 alt 文本等更改正确应用于目标图片。
工具栏抽屉现会在编辑器失去焦点时关闭。
在 TinyMCE 早期版本中,即使编辑器失去焦点,浮动工具栏仍会保持可见。该行为可能引发无障碍性问题,因工具栏未与所控制的编辑器正确关联,可能使用户感到困惑。
在 TinyMCE 8.0.0 中,工具栏现会在编辑器失去焦点时自动关闭。这确保其仅在合适上下文中显示,提升无障碍性并改善整体用户体验。
鼠标悬停按钮时,按钮间的方向键导航受阻。
在以前的 TinyMCE 版本中,如果在用箭头键导航时鼠标悬停某个按钮,焦点将返回到先前聚焦的元素。这会导致选择固定在具有 mouseover 事件的按钮上。
TinyMCE 8.0.0 通过防止在箭头键导航期间再次触发 mouseover 事件来解决了这个问题,确保在使用箭头键导航时提供无缝的用户体验。
在 Firefox 中无法使用左右箭头键导航退出 figcaption。
在 TinyMCE 8.0.0 之前,Firefox 存在一个问题:按下左或右箭头键后,用户无法退出图像 figcaption 元素。这种行为与其他主流浏览器如 Google Chrome 和 Safari 不一致,在这些浏览器中,箭头键按预期工作并允许无缝退出 figcaption。
从 TinyMCE 8.0.0 开始,此问题已解决。用户现在可以在 Firefox 中使用左/右箭头键退出 figcaption,使其行为与其他浏览器一致。此更新确保了更一致的用户体验。
当使用 apply 按钮关闭 alt 子工具栏时,装饰性图像将失去其装饰性状态。
之前发现一个问题:使用 Apply 按钮关闭 alt 子工具栏时,会无意中删除已标记为装饰性图像的装饰状态。这是因为 onSetup API 禁用了输入组,导致 Apply 逻辑错误地将图像解释为非装饰性的。
此问题已在 TinyMCE 8.0.0 中解决。onSetup 和 Apply 的行为已经对齐,以一致地评估输入组,确保装饰状态按预期保留。
HTML 模式未将 colgroup 或 col 元素视为块元素。
在以前的 TinyMCE 版本中,<colgroup> 和 <col> 标签之间的空格不会被 TinyMCE 的 HTML 模式移除。这种行为导致编辑器在表格标记中保留不必要的空格字符。
此问题在 8.0.0 中已解决。现在 colgroup 和 col 元素都被视为块级元素,确保这些区域中的多余空格被删除。因此,编辑器现在可以生成更干净、更简洁的表格标记。
删除整个元素有时会修改附近的内容
之前,使用“源代码”编辑器通过剪切 Ctrl+X 或 Cmd+X、退格或按删除键删除整个 HTML 元素时,可能会无意中修改周围的内容。例如,删除 <p> 标签前面的 <div> 元素可能会导致 <p> 转换为 <div>,导致意外的结构更改。
此问题已在 TinyMCE 8.0.0 中通过改进编辑器的 DOM 逻辑中元素删除的处理方式得到解决。剪切或删除所选元素现在可以保留相邻元素的完整性和标签类型。用户在修改 HTML 源内容时可以期待一致且可预测的编辑行为。
删除线格式可能会在字体大小格式之外添加,这在某些浏览器中渲染不正确。
之前存在一个问题:结合删除线(s 元素)和字体大小格式可能会导致在某些浏览器(尤其是 Chrome)中渲染不正确。当 s(删除线)元素放置在字体大小 span 之外时会发生这种情况,导致删除线渲染不正确。
修复确保 s 元素现在正确嵌套在字体大小元素内,提高了浏览器之间的视觉一致性。
长工具提示可能会溢出狭窄的浏览器窗口
之前,长工具提示可能会溢出狭窄的浏览器窗口,导致工具提示文本被部分截断且不可读。这个问题在“显示或隐藏更多工具栏选项”按钮的 … 省略号工具栏中最为明显,工具提示文本无法适应狭窄的视口。
在 TinyMCE 8.0.0 中,工具提示的行为得到了改进,以确保长工具提示在狭窄的浏览器窗口中正确定位和换行。这防止了溢出,并确保即使在较小的视口中也能查看完整的工具提示文本。
在具有不可编辑最终行的表格中按 Tab 键创建新行会冻结编辑器。
之前,当 Tab 键进入表格的不可编辑最终行时,编辑器无法识别该行是只读的,而是复制了它。这导致尝试将光标放在复制的行中,但该行仍然不可编辑。此过程将无限重复,创建一个最终冻结编辑器的循环。
TinyMCE 8.0.0 通过检测表格的最终行何时为只读并防止在这种情况下插入新行来解决了这个问题。这确保了在使用 Tab 键导航表格时的稳定性。
嵌套字体大小不再导致过多的行间距
之前,对嵌套元素应用不同的字体大小可能会导致不一致且过大的行高。这会影响用户,引入视觉混乱并使文本块看起来错位或难以阅读。
TinyMCE 8.0.0 引入了一项修复,确保行高根据新行中可见的字号计算,而不是继承父元素的 line-height。这意味着当在同一内容中应用不同字号时,行高将保持一致并与可见字号成比例。
插入无效 HTML 片段时改进了结构保留
以前,当通过 API 插入 HTML 片段或粘贴时,解析器会尝试修复无效结构,这可能导致表格和列表等有效结构丢失。这种行为不一致,在处理复杂 HTML 内容时可能导致意外结果。
在 TinyMCE 8.0.0 中,解析器已更新以改进插入 HTML 片段时的结构保留。现在它会在父结构上下文中验证这些片段,确保即使片段包含无效 HTML 也能保留有效结构,从而在处理复杂 HTML 内容时实现更可预测和理想的结果。
当现有列表项包含块级元素时新列表项未正确插入
TinyMCE 8.0.0 解决了一个影响列表管理的问题,即当父列表项包含块级格式时。以前,当包含子列表的列表项被格式化为块级元素(如 <p> 或 <div>)时,在该列表项末尾按 Enter 键会错误地将新列表项放置在子列表项旁边,而不是作为父列表项的同级。
TinyMCE 8.0.0 通过确保当用户在包含块级格式的列表项末尾按 Enter 键时,新列表项正确插入为父列表项的同级,而不是错误地放置在子列表项旁边,解决了这个问题。
已弃用
TinyMCE 8.0.0 包括以下弃用项:
Java Swing 集成已弃用
TinyMCE 的 Java Swing 集成在 TinyMCE 8.0 中已弃用,并将于 2025 年 12 月 31 日终止生命周期。
有关 Java Swing 集成的信息,请参阅:TinyMCE Java Swing 集成
基于 Java 应用服务器的服务组件已弃用
TinyMCE 8.0.0 弃用了自托管服务基于 Java 应用服务器的部署方法。Docker 容器现在是自托管服务唯一支持的部署方法。Java .war 文件(ephox-spelling.war、ephox-image-proxy.war、ephox-hyperlinking.war)将在未来的发行版中移除。
有关使用 Docker 容器设置容器化服务端组件的信息,请参阅:高级自托管包容器化服务端服务简介和初始设置
Docker 容器服务
增强型媒体嵌入和链接检查服务,请参阅:使用 Docker 部署 TinyMCE 超链接服务端组件。
图像编辑和导出图像代理服务,请参阅:使用 Docker 部署 TinyMCE 图像代理服务端组件。
拼写检查服务,请参阅:使用 Docker 部署 TinyMCE 拼写服务服务端组件。
导出 PDF 服务,请参阅:使用 Docker 部署 TinyMCE 导出 PDF 服务服务端组件。
从 Word 导入和导出到 Word 服务,请参阅:使用 Docker 部署 TinyMCE 从 Word 导入和导出到 Word 服务服务端组件。
ToggleToolbarDrawer 命令的 skipFocus 选项已弃用
ToggleToolbarDrawer 命令以前接受一个非标准的 skipFocus 选项,以防止在执行命令时编辑器获得焦点。这种行为与其他编辑器命令不同,其他命令使用通用的 skip_focus 选项达到相同目的。因此,这种不一致导致在实现或维护命令逻辑时产生困惑。
为解决这个问题,已将对标准 skip_focus 选项的支持添加到 ToggleToolbarDrawer 命令中。skipFocus 选项现在在 TinyMCE 8.0.0 中已被弃用,并将在未来的发行版中移除。
skipFocus 选项editor.execCommand('ToggleToolbarDrawer', false, { skipFocus: true });弃用后使用 skip_focus 选项editor.execCommand('ToggleToolbarDrawer', false, null, { skip_focus: true });此更改提高了命令间的一致性,并与 TinyMCE 8.0.0 中的预期使用模式保持一致。
已弃用用于事件处理的 fire() 方法
fire() 方法最初在 TinyMCE 6 中已弃用,转而使用 dispatch() 方法进行事件处理,但从未从代码库中移除。TinyMCE 8.0.0 现在在使用 fire() 方法时会显示弃用警告,作为其在 TinyMCE 9 中被移除前的最终通知。
此次姗姗来迟的清理工作使 API 与现代事件处理惯例保持一致,并消除了方法命名方面的混淆。集成人员应迁移到 dispatch() 方法,以确保与未来版本兼容。
// TinyMCE 8 中已弃用,将在 9 中移除
editor.fire('someEvent');分发自定义事件的新方法// 改用 dispatch()
editor.dispatch('someEvent');有关 dispatch() 方法的更多信息,请参见:EventDispatcher。
已弃用的 editor.selection.setContent API
TinyMCE 8.0.0 中已弃用 editor.selection.setContent 方法。此低级 API 从未打算供外部使用,并且在插入复杂内容结构(如列表)时不能保证一致的行为。建议集成人员使用受支持的 editor.insertContent 方法进行可靠的内容插入。
此次弃用有助于减少混淆,并使内容插入与 TinyMCE 受支持的 API 保持一致。