这些是 Tiny Cloud 和 TinyMCE Enterprise 的发行说明。有关 TinyMCE 最新社区版本的信息,请参阅 TinyMCE Changelog。
概述
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)中,此空 CSS 文件仍被加载,尽管其内容在之前的更新中已移至 Oxide 主题。此更改确保了更干净的资源加载,并避免了不必要的网络请求。
此次移除不影响插件功能,适用于所有编辑器模式。
有关 Mentions 插件的信息,请参阅:Mentions。
Spell Checker(拼写检查器)
TinyMCE 8.0.0 版本包含配套发布的 Spell Checker Premium 插件。
Spell Checker Premium 插件包含以下修复和改进。
标记有 lang 属性的内容有时无法正确进行拼写检查。
以前,拼写检查器不能一致地处理标记有不同 lang 属性的内容,特别是当语言代码使用不同格式时。这种不一致导致对使用替代大小写或分隔符约定的 span 中的单词进行拼写检查时出现遗漏(例如,en-GB 与 en_GB)。
此问题是在 TinyMCE 6.4 中引入的,其中包含使用不同格式的语言代码混合的文档无法可靠地进行拼写检查。因此,使用替代大小写或分隔符约定的 span 中的拼写错误单词未被检测到,尽管它们在 6.3 版中表现正常。
在 8.0.0 版中,恢复了对混合大小写和混合格式语言代码的支持。拼写检查器现在可以正确识别和处理语言属性格式的变化,确保无论代码样式如何,内容都能被可靠地检查。这一改进使得对包含多种语言和不同地区约定的文档能够进行准确的拼写检查。
屏幕阅读器未播报拼写错误单词的输入标签。
在以前的版本中,Spell Checker 对话框的拼写错误单词输入字段缺少适当的辅助功能标签,导致屏幕阅读器无法播报其用途。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 插件,有关支持的语言的完整列表,请参阅:支持的语言。
可访问性检查器
TinyMCE 8.0.0 版本包括配套发布的 Accessibility Checker 高级插件。
Accessibility Checker 高级插件包括以下改进。
可访问性:a11ychecker 插件中的增强图像可访问性检查
TinyMCE 8.0.0 在 a11ychecker 插件中引入了四条新的图像可访问性规则(图像规则),以提高合规性和创作指导。这些规则有助于识别与图像使用相关的常见可访问性问题,并提供可行的建议:
I1: 混合信号和装饰策略:标记具有冲突的可访问性指示符的图像(例如,
alt与role="presentation"),并确保装饰图像符合最佳实践。I2: Alt 属性要求:强制所有
<img>元素上存在alt属性,无论是否有其他标签机制,如aria-label、aria-labelledby或title。I3: 文件名检测:当
alt文本看起来像文件名(例如,image123.jpg)时发出警告,包括带有 URL 编码的情况。I4: Alt 文本长度:检测超过可配置最大长度的
alt文本,促进简洁的描述。默认限制为 150 个字符,可以使用新的a11ychecker_alt_text_max_length设置进行调整。
其他改进包括规则优先级系统以避免重复违规、集中式图像意图检测(例如,装饰、信息、混合信号、不完整)和更易读的用户界面消息。"替代文本"等技术术语已被替换为"文本描述",修复说明现在更具上下文相关性且更易于用户理解。
新的 a11ychecker_alt_text_max_length 配置选项用于 Accessibility Checker alt 文本长度
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 导入解析失败。
当用户启用了 PowerPaste 功能时,如果将 Microsoft Word 文档中应用了“无列表”(No List) 样式的列表内容粘贴到编辑器中,会因为解析错误导致粘贴失败。结果是内容无法插入编辑器,造成内容工作流程中断。TinyMCE 8.0.0 解决了此问题,更新了 PowerPaste 解析器以正确处理带有“无列表”样式的列表。因此,用户现在可以成功将此类内容粘贴到编辑器中而不会遇到错误。
有关 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) => {
// Returning 'anonymous' or 'use-credentials' here would explicitly set the attribute
return 'anonymous';
// return 'use-credentials';
// return undefined; // Omits the 'crossorigin' attribute for all resources by returning undefined
};
tinymce.init({
selector: "textarea",
crossorigin: crossOriginFunction
});此改进确保了在不同部署场景下一致的资源加载行为,并为脚本和样式表的 CORS 设置提供了更好的控制。
有关更多详细信息,请参阅 crossorigin 配置选项文档。
现在可以通过按 escape 键关闭工具提示框 (Tooltip)。
在 8.0.0 版本之前,无法使用键盘关闭工具提示框,这带来了无障碍访问方面的问题。从 TinyMCE 8.0.0 开始,现在可以通过 escape 键关闭工具提示框,从而改善了无障碍访问性。
屏幕阅读器现在会播报有关如何导航颜色样本、图像选择和插入表格小组件的说明。
以前,诸如颜色样本、创建表格网格和图像选择等交互式元素缺少 aria-label。这导致键盘用户缺乏操作说明,并阻碍了整体的无障碍访问性。
TinyMCE 8.0.0 现在为这些元素添加了 aria-label,提供了清晰的键盘导航说明。此改进确保了所有用户都能获得更佳的无障碍体验。
调整大小的手柄通过 role 和 aria-valuetext 属性增强了无障碍访问性。
在 TinyMCE 的早期版本中,编辑器的调整大小手柄缺少 role 属性,这引起了无障碍访问方面的担忧。
在 TinyMCE 8.0.0 中,调整大小手柄现在包含了一个 role separator 和一个 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 屏幕阅读器读作“dot dot dot”,可能会给依赖辅助技术的用户造成困扰。为提升可访问性,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 配置的通用解决方案,包括当前支持的插件,如 建议编辑、评论 和 修订历史。
主要功能包括:
当前用户识别:使用新的
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);
});
});有关全面的文档和示例,请参阅:User Lookup 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:前缀。无需服务器通信或“电话回家”检查
支持基于日期和版本锁定的密钥
简化的混合部署配置
改进了对气隙环境和离线环境的支持
云部署:
使用 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。
错误修复
TinyMCE 8.0.0 还包括以下错误修复:
当 figure 被选中时,按 Tab 键不会正确移动选择到 figcaption。
以前,tab 键没有正确处理嵌套组件。具体来说,当 CET(Content Editable True)元素放置在 CEF(Content Editable False)元素(如 figcaption)内时,焦点行为不直观。这导致了与可编辑嵌套元素(如 figcaption)交互时不一致且令人困惑的键盘导航。
TinyMCE 8.0.0 通过确保按 tab 键时,当 CET 元素嵌套在 CEF 元素内时正确移动焦点到此元素来解决了这个问题。这确保了像 figcaption 这样的嵌套可编辑元素的流畅和可预测的键盘导航。
剪切整个 HTML 元素会添加一个空段落。
以前,识别到一个问题,即剪切整个块元素(如 div 或 p HTML 元素)会导致该块被空段落替换。这种行为仅发生在未包含在表格中的块上,导致剪切表格内的内容与外部行为不同的不一致结果。此外,这种行为与退格 delete 操作的行为不同。
TinyMCE 8.0.0 通过统一表格内外的内容行为来解决了这个问题。更新后的实现将剪切行为与退格 delete 操作保持一致,确保更一致和可预测的编辑体验。
Codesample 对话框无法按预期禁用拼写检查。
以前,browser_spellcheck 设置未正确禁用 Codesample 对话框文本区域中的拼写检查。这是因为该设置应用于对话框的文本区域,而不是主编辑器实例。
此外,advcode 和 code 插件对话框没有显式禁用基于浏览器的拼写检查。结果,无论 browser_spellcheck 设置如何,代码内容中不必要地出现了红色下划线。
尝试在 block 元素(如图像)之后直接添加换行会导致错误。
在 TinyMCE 的以前版本中,内容选择逻辑错误地假设目标元素位于文本节点内。实际上,它直接放置在 <div> 元素内。这种不匹配导致所选内容被错误地重新插入到自身中,在紧接图像后按 Enter 键时导致错误,并带来了数据丢失的风险。
此问题在 TinyMCE 8.0.0 中已解决。选择逻辑已更新,以正确识别和处理 <div> 元素内的内容,使其不尝试将内容插入自身中。结果,在 <div> 元素内的图像后按 Enter 键不再触发错误或导致意外行为。
在 inline 模式中,按后退按钮会关闭上下文工具栏并将焦点从选中的图像移动到编辑器。
在 inline 模式中,上下文表单工具栏错误地将焦点从选中的图像移到了编辑器容器。结果,依赖当前选择应用更改的插件无法将属性(如 alt 文本)应用到正确的图像。
TinyMCE 8.0.0 通过确保焦点得到正确保留来解决了这个问题,确保插件现在在 inline 模式中将更改(如 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,使其行为与其他浏览器一致。此更新确保了更一致的用户体验。
当使用应用按钮关闭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 引入了一个修复,确保行高是根据新行中可见的字体大小计算的,而不是从父元素继承行高。这意味着当在同一内容中应用不同的字体大小时,行高将保持一致并与可见的字体大小成比例。
插入无效 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 for Java Swing integration
基于 Java 应用服务器的服务组件已弃用
TinyMCE 8.0.0 弃用了自托管服务基于 Java 应用服务器的部署方式。Docker 容器现在是自托管服务唯一支持的部署方式。Java .war 文件(ephox-spelling.war、ephox-image-proxy.war、ephox-hyperlinking.war)将在未来的发布中被移除。
有关使用 Docker 容器设置容器化服务器端组件的信息,请参阅:Introduction and initial setup for containerized server-side services from the premium self-hosted bundles
Docker 容器服务
增强的 Media Embed 和 Link Checker 服务,请参阅:Deploy the TinyMCE hyperlinking server-side component using Docker。
图像编辑和导出图像代理服务,请参阅:Deploy the TinyMCE image proxy server-side component using Docker。
拼写检查服务,请参阅:Deploy the TinyMCE spelling service server-side component using Docker。
导出为 PDF 服务,请参阅:Deploy the TinyMCE Export to PDF service server-side component using Docker。
从 Word 导入和导出到 Word 服务,请参阅:Deploy the TinyMCE Import from Word and Export to Word service server-side component using Docker。
ToggleToolbarDrawer 命令的 skipFocus 选项已弃用
以前,ToggleToolbarDrawer 命令接受一个非标准的 skipFocus 选项,用于在执行该命令时防止编辑器获得焦点。这种行为与其他使用通用的 skip_focus 选项实现相同目的的编辑器命令不同。因此,这种不一致导致在实现或维护命令逻辑时产生混淆。
为了解决这个问题,ToggleToolbarDrawer 命令中已添加对标准 skip_focus 选项的支持。现在,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() 方法,但从未从代码库中移除。现在,当使用 fire() 方法时,TinyMCE 8.0.0 会显示弃用警告,这是它在 TinyMCE 9 中被移除之前的最终通知。
这次姗姗来迟的清理工作使API与现代事件处理规范保持一致,并消除了方法命名上的混淆。集成人员应迁移到dispatch()方法,以确保与未来版本的兼容性。
// Deprecated in TinyMCE 8, will be removed in 9
editor.fire('someEvent');新的自定义事件派发方式// Use dispatch() instead
editor.dispatch('someEvent');有关dispatch()方法的更多信息,请参阅:EventDispatcher。
废弃的 editor.selection.setContent API
editor.selection.setContent方法在TinyMCE 8.0.0中已被废弃。这个底层API本不打算供外部使用,并且在插入复杂内容结构(如列表)时无法保证一致的行为。建议集成人员使用受支持的editor.insertContent方法以实现可靠的内容插入。
这一废弃有助于减少混淆,并使内容插入与TinyMCE支持的API保持一致。