这些是 Tiny Cloud 和 TinyMCE Enterprise 的发行说明。有关 TinyMCE 最新社区版本的信息,请参阅 TinyMCE 更新日志。
概述
TinyMCE 8.0.0 于 2025 年 7 月 23 日星期三发布,适用于 TinyMCE Enterprise 和 Tiny Cloud。本发行说明概述了 TinyMCE 8.0.0 的变更,包括:
新的高级插件
随附的高级插件变更
随附的增强皮肤与图标包变更
改进
新增
变更
错误修复
已弃用
此版本包含对 license key 系统的破坏性变更。所有商用自托管部署都必须更新其 license key 以使用新的
T8LK:前缀格式。有关此变更和其他破坏性变更的详细信息,请在考虑升级时参阅 从 TinyMCE 7 迁移到 TinyMCE 8.0.0。
新的高级插件
以下新的高级插件随 TinyMCE 8.0.0 一同发布。
Suggested Edits
TinyMCE 8.0.0 版本包含 Suggested Edits 高级插件的配套发布。
Suggested Edits 插件允许多名用户协作处理文档。审阅窗口显示哪位用户建议了哪些编辑,无论是添加、删除、修改还是替换内容,并允许用户对这些建议提供反馈,或通过接受或拒绝来完成最终审阅。
有关 Suggested Edits 插件的信息,请参阅:Suggested Edits。
随附的高级插件变更
以下高级插件更新随 TinyMCE 8.0.0 一同发布。
Mentions
TinyMCE 8.0.0 版本包含 Mentions 高级插件的配套发布。
Mentions 高级插件包含以下修复和移除。
暗色模式下 Mentions 用户名不随皮肤切换更新
此前,当在皮肤之间切换时(尤其在暗色模式下),mentions 卡片上显示的用户名无法正确更新。这导致用户名在深色背景上不可见,用户难以阅读。
为解决此问题,已更新用户名的样式。该类现在在默认样式中使用 @text-color 变量,确保在项目处于活动状态时从其父元素继承正确的颜色。这一变更保证用户名在亮色和暗色主题中都保持可见且可读。
移除 Mentions 插件中未使用的样式表
在 8.0.0 中,已从 Mentions 插件移除未使用的 mentions.css 文件。在早期版本(例如 7.9)中,该空 CSS 文件仍然会被加载,尽管其内容已在先前的更新中移动到 Oxide 主题。此变更确保更干净的资源加载并避免不必要的网络请求。
该移除不影响插件功能,并且适用于所有编辑器模式。
有关 Mentions 插件的信息,请参阅:Mentions。
Spell Checker
TinyMCE 8.0.0 版本包含 Spell Checker 高级插件的配套发布。
Spell Checker 高级插件包含以下修复和改进。
带有 lang 属性的内容有时无法正确进行拼写检查
此前,拼写检查器无法一致地处理带有不同 lang 属性的内容,尤其是当语言代码使用不同格式时。这种不一致导致在使用不同大小写或分隔符约定的 span(例如 en-GB 与 en_GB)中的单词被漏检。
该问题引入于 TinyMCE 6.4,当时包含混合格式语言代码的文档无法被可靠地拼写检查。结果是,在使用不同大小写或分隔符约定的 span 中的拼写错误无法被检测到,尽管它们在 6.3 版本中工作正常。
在 8.0.0 中,恢复了对混合大小写和混合格式语言代码的支持。拼写检查器现在能够正确识别并处理语言属性格式的差异,确保无论代码风格如何都能可靠地检查内容。这一改进使得包含多种语言和多样化区域约定的文档能够进行准确的拼写检查。
拼写错误单词的输入标签未被屏幕阅读器播报。
在先前版本中,Spell Checker 对话框的拼写错误单词输入字段缺少适当的无障碍标签,导致屏幕阅读器无法播报其用途。TinyMCE 8.0.0 通过在“Misspelled Word”文本与其输入字段之间添加适当的标签关联,解决了这一无障碍限制。这一增强使屏幕阅读器能够正确识别并播报输入字段的用途,从而改善依赖辅助技术用户的拼写检查体验。
语言代码标准化为 RFC5646/BCP47 格式
TinyMCE 8.0.0 版本引入了对使用 RFC5646(亦称 BCP47)格式的语言代码的标准化支持。此更新适用于所有与语言相关的配置,包括:
UI 语言包(高级和社区)
拼写检查器语言代码
HTML
lang属性
内容语言选择
变更
语言代码现在使用连字符(
-)代替下划线(_)。例如:'en-US'代替'en_US''zh-TW'代替'zh_TW''pt-BR'代替'pt_BR'
没有区域的基础语言代码(例如
'en'、'es'、'fr')保持不变。语言包的文件名已更新为使用连字符。
Premium 插件已更新,可识别符合 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 premium 插件的信息,请参阅:Spell Checker 插件,或有关支持的语言的完整列表,请参阅:支持的语言。
Accessibility Checker
TinyMCE 8.0.0 版本包含相应的 Accessibility Checker premium 插件版本。
Accessibility Checker premium 插件包含以下改进。
可访问性:a11ychecker 插件中增强的图像可访问性检查
TinyMCE 8.0.0 在 a11ychecker 插件中引入了四条新的图像可访问性规则(图像规则),以改进合规性和创作指导。这些规则有助于识别与图像使用相关的常见可访问性问题,并提供可操作的建议:
I1:混合信号和装饰策略:标记具有冲突的可访问性指示符的图像(例如,带有
role="presentation"的alt),并确保装饰性图像符合最佳实践。I2:Alt 属性要求:强制要求所有
<img>元素都必须存在alt属性,无论是否有其他标签机制(如aria-label、aria-labelledby或title)。I3:文件名检测:当
alt文本看起来像文件名(例如image123.jpg)时发出警告,包括 URL 编码的情况。I4:Alt 文本长度:检测超过可配置最大长度的
alt文本,以促进简洁的描述。默认限制为 150 个字符,可以使用新的a11ychecker_alt_text_max_length设置进行调整。
其他改进包括一个规则优先级系统以避免重复违规、集中式图像意图检测(例如,装饰性、信息性、混合信号、不完整)和更易读的用户界面消息。诸如“alternative text”之类的技术术语已被替换为“text description”,并且修复说明现在更具上下文相关性和用户友好性。
新的 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 // Set maximum length to 150 characters
});有关 Accessibility Checker 插件的更多信息,请参阅:Accessibility Checker。
PowerPaste
TinyMCE 8.0.0 版本包含相应的 PowerPaste premium 插件版本。
带有“更轻”级别的列表的 Word 导入解析失败。
当用户在启用了 PowerPaste 的编辑器中粘贴包含 Word“无列表”样式列表的 Microsoft Word 文档内容时,由于解析错误,操作失败。结果,内容未插入编辑器,导致内容工作流程中断。TinyMCE 8.0.0 通过更新 PowerPaste 解析器来正确处理“无列表”样式的列表来解决这个问题。结果,用户现在可以成功将此类内容粘贴到编辑器中而不会出错。
有关 PowerPaste 插件的信息,请参阅:PowerPaste。
评论
TinyMCE 8.0.0 版本包含 评论 高级插件的配套版本。
评论 高级插件包括以下移除内容。
移除未使用的评论样式表
在 8.0.0 中,未使用的 tinycomments.css 文件已从 评论 插件中移除。在早期版本(如 7.9)中,这个空的 CSS 文件仍在加载,尽管其内容已在先前的更新中移至 Oxide 主题。此更改确保了更干净的资源加载,并避免了不必要的网络请求。
有关 评论 插件的信息,请参阅:Tiny Comments 简介。
配套增强皮肤和图标包更改
TinyMCE 8.0.0 版本包含 增强皮肤和图标包 的配套版本。
增强皮肤和图标包
增强皮肤和图标包 版本包括以下更新:
增强皮肤和图标包 已重新构建,以纳入也集成到默认 TinyMCE 8.0.0 皮肤 Oxide 中的更改。
有关使用增强皮肤和图标包的信息,请参阅:增强皮肤和图标包。
改进
TinyMCE 8.0.0 还包括以下改进:
增强跨域资源处理
添加了一个新的基于函数的 crossorigin 配置选项,可对跨域资源加载进行精细控制。该函数接收资源 URL 和类型(脚本或样式表)作为参数,并可以返回 '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 分隔符和一个 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 方法会同时更新主按钮和箭头按钮的工具提示,以保持一致性。
有关更多信息,请参阅 拆分工具栏按钮。
用于检索和缓存用户详情的新 User Lookup API
TinyMCE 8.0.0 引入了新的 User Lookup API,使集成能够检索和缓存用户详情(如姓名和头像),并识别编辑器中的当前用户。在构建依赖用户上下文的功能(如评论系统或显示包含用户信息的元素列表)时,此 API 特别有用。
User Lookup 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,该 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:前缀。无需服务器通信或"电话回传"验证
同时支持基于日期和版本锁定的密钥
简化混合部署配置
增强对隔离环境和离线环境的支持
云部署:
使用 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 解决了这个问题,确保当 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 schema 没有将colgroup 或 col 元素视为块级元素。
在旧版本的 TinyMCE 中,<colgroup> 和 <col> 标签之间的空白不会被 TinyMCE 的 HTML schema 移除。这种行为导致编辑器在表格标记中保留了不必要的空白字符。
此问题在 8.0.0 中已解决。现在,colgroup 和 col 元素都被视为块级元素,从而确保从这些区域中去除多余空白。结果是,编辑器现在生成更干净、更简洁的表格标记。
删除整个元素有时会修改附近的内容
之前,使用“源代码”编辑器删除整个 HTML 元素时,无论是通过剪切 Ctrl+X 或 Cmd+X、退格键还是按 delete 键,都可能无意中修改周围的内容。例如,删除 <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 集成的信息,请参阅:用于 Java Swing 集成的 TinyMCE
Java 应用服务器端的服务器组件已弃用
TinyMCE 8.0.0 弃用了 Java 应用服务器端的部署方法,用于自托管服务。Docker 容器现在是自托管服务唯一支持的部署方法。Java .war 文件(ephox-spelling.war、ephox-image-proxy.war、ephox-hyperlinking.war)将在未来版本中移除。
有关使用 Docker 容器设置容器化服务器端组件的信息,请参阅:premium 自托管捆绑包的容器化服务器端服务的介绍和初始设置
Docker 容器服务
增强的 Media Embed 和 Link Checker 服务,请参阅:使用 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
editor.selection.setContent 方法在 TinyMCE 8.0.0 版本中已被弃用。这个底层 API 从未打算供外部使用,并且在插入复杂内容结构(如列表)时,无法保证行为一致。建议集成人员使用受支持的 editor.insertContent 方法进行可靠的内容插入。
此次弃用有助于减少混淆,并使内容插入与 TinyMCE 受支持的 API 保持一致。