这是 Tiny Cloud 和 TinyMCE Enterprise 的发行说明。有关 TinyMCE 最新社区版本的信息,请参阅 TinyMCE Changelog。
概述
TinyMCE 8.4.0 于 2026 年 3 月 31 日星期二发布,适用于 TinyMCE Enterprise 和 Tiny Cloud。本发行说明概述了 TinyMCE 8.4.0 的变化,包括:
新的 Premium 插件
配套的 Premium 插件变更
配套的增强型皮肤和图标包变更
改进
新增
变更
错误修复
安全修复
新的 Premium 插件
以下新的 Premium 插件随 TinyMCE 8.4.0 一同发布。
TinyMCE AI
TinyMCE AI 是 TinyMCE 新的 premium AI 平台:凭借开箱即用的 AI 功能,实现更快的起草和更强大的编辑工作流——现提供即插即用插件和用于自定义集成的 API 两种形式。
该平台以三种体验为核心,契合团队对现代 AI 写作工具的期待:
聊天:上下文对话、持久历史记录,以及理解文档的帮助。
审阅:针对长篇内容和编辑标准的校对与结构化质量检查。
操作:面向日常任务(语气、长度、清晰度等)的快速、可重复转换。
用户界面背后是一个生产就绪的 TinyMCE AI API,具备 JWT 认证、细粒度权限和多模型支持,也可用于您的更广泛应用程序。
这对用户的意义(界面构建所围绕的成果):
无需离开编辑器即可推进草稿并优化语气。
通过引导式流程进行总结、调整长度并提升清晰度。
通过权限和审阅式工作流,保持品牌和策略护栏触手可及。
TinyMCE AI 的文档:
TinyMCE AI 简介 — 能力、特性以及平台如何协同。
TinyMCE AI 插件 — 设置、配置以及开箱即用的编辑器体验。
TinyMCE AI API — 服务集成、认证以及在编辑器之外进行构建。
付费计划的现有客户可通过 客户门户申请功能完整的免费试用。
配套的 Premium 插件变更
以下 premium 插件更新随 TinyMCE 8.4.0 一同发布。
Comments
TinyMCE 8.4.0 版本包含 Comments premium 插件的配套发布。
Comments 包含以下修复。
创建新评论时的错误导致保存按钮卡在保存状态。
此前,在 Comments 中创建或编辑评论时,若保存操作失败或组件未被替换,保存按钮可能会无限期停留在保存状态。保存状态除了重建组件外无法重置为 false,从而误导用户认为操作仍在进行。
在 TinyMCE 8.4.0 中,保存逻辑现在会在保存操作完成后将保存状态重置为 false,无论操作成功与否。保存按钮不再卡在保存状态。
包含 @ 的 id 用户无法正确解析。
此前,Comments 中的提及解析器未将 @ 符号视为提及字符串的一部分。包含 @ 的用户 ID(如电子邮件地址)被错误拆分,导致提及在保存后仍显示为原始文本,而非解析为显示名称。
在 TinyMCE 8.4.0 中,Comments 插件现在能正确解析包含 @ 的用户 ID 的提及。提及将按预期解析为显示名称。
有关 Comments 插件的信息,请参阅:Comments。
Export to PDF
TinyMCE 8.4.0 版本包含 Export to PDF premium 插件的配套发布。
Export to PDF 包含以下新增内容。
exportpdf 支持 API 版本 2 转换器选项
TinyMCE 8.4.0 通过 exportpdf_converter_options 增加了对 exportpdf API 2 版本的支持。版本 1 仍为默认选项以确保向后兼容。新的嵌套结构将选项组织在 document、headers、footers、metadata、security 和 signature 之下,支持逐页页眉和页脚、PDF 元数据、密码保护以及基于证书的签名。
有关 Export to PDF 插件的信息,请参阅 Export to PDF。
Full Page HTML
TinyMCE 8.4.0 版本包含 Full Page HTML premium 插件的配套发布。
Full Page HTML 包含以下修复。
已将弃用的浏览器 API 替换为现代等效 API。
以前,Full Page HTML 插件使用弃用的 escape 和 unescape JavaScript API 处理某些受保护内容。不再建议在新代码中使用这些 API。
在 TinyMCE 8.4.0 中,该插件改用现代编码 API。这使实现符合当前浏览器指南,并提高了受保护内容处理的可靠性。
粘贴 HTML 文档时存在 XSS 攻击漏洞
在 Full Page HTML 插件中发现了一个跨站脚本(XSS)漏洞。以前,粘贴时能够执行文档 <head> 中的恶意代码。
TinyMCE 8.4.0 已通过确保对文档 <head> 中的内容进行正确编码,修复了此漏洞。
为 editor.getContent() 和 editor.setContent() API 新增参数 fullpagehtml,以便在 Full Page HTML 插件激活时仅获取/设置内容的主体。
以前,在使用 Full Page HTML 插件时,由于所有 API 调用中都包含完整的 HTML 文档(即使不需要),设置和获取编辑器内容可能会很麻烦。仅获取和操作主体内容(例如,用于保存)没有文档说明,并且需要变通方法。
在 TinyMCE 8.4.0 中,已向 editor.getContent() 和 editor.setContent() API 添加了 fullpagehtml 选项。当设置为 false 时,该选项允许在 Full Page HTML 插件激活时仅获取和设置主体内容,而不会干扰完整的文档结构。现在文档更不容易被意外更改,并且可以检索或更新内容而无需包含完整的 HTML 文档。有关详细信息,请参阅 fullpagehtml option for getContent/setContent。
有关 Full Page HTML 插件的信息,请参阅:Full Page HTML。
Media Optimizer
TinyMCE 8.4.0 版本包含了 Media Optimizer 高级插件的配套版本。
Media Optimizer 包含以下新增和修复。
与 quickbars 插件一起使用时,工具栏按钮未初始化。
以前,当 Media Optimizer 插件与 quickbars 插件一起使用时,uploadcare 工具栏按钮根本未注册。因此,即使进行了配置,该按钮也无法显示在工具栏中。
在 TinyMCE 8.4.0 中,uploadcare 按钮现在总是会注册,并且可以在 quickbars 插件旁边的工具栏中使用。为了避免在上下文工具栏中重复,当 quickbars 插入图像按钮已存在时,插件不再添加 uploadcare 按钮。
当 Media Optimiser 插件与 CSS 插件一起使用时,第三方库图标会显示在格式中
以前,当 Media Optimiser 插件与 importcss 插件一起使用时,旧版本的 uc-video 需要导入外部样式。importcss 插件检测到这些导入并将它们添加到格式菜单中,导致第三方库图标出现在格式 UI 中。这些图标不属于官方 TinyMCE 图标包,并造成了混乱和不一致的 UI 体验。
在 TinyMCE 8.4.0 中,uc-video 包已升级到一个样式在 Web 组件中自包含的版本。importcss 插件不再检测 uc-video 样式,因此第三方图标不再出现在格式 UI 中。
现在可以上传 SVG 图像。
以前,无法通过 Media Optimizer 插件上传 SVG 图像,因为 Uploadcare 对 SVG 文件处理施加了限制。需要在内容中包含 SVG 图形的用户无法直接上传它们。
在 TinyMCE 8.4.0 中,现在可以通过 Media Optimizer 插件上传 SVG 图像。某些 CDN 操作可能对 SVG 文件有限制;有关详细信息,请参阅 Uploadcare 关于 CDN 操作限制的文档。
有关 Media Optimizer 插件的信息,请参阅:Media Optimizer。
Suggested Edits
TinyMCE 8.4.0 版本包含了 Suggested Edits 高级插件的配套版本。
Suggested Edits 包含以下改进和修复。
文档视图渲染以减少加载 Suggested Edits 时的闪烁。
以前,在 Review Edits 视图中显示的文档依赖于弃用的浏览器方法 document.write,这可能导致内容在完全应用样式之前显示。用户在打开审阅界面时可能会短暂看到部分渲染或未应用样式的内容。
在 TinyMCE 8.4.0 中,Review Edits 视图中的文档加载过程已更新,移除了弃用的方法。现在文档仅在完全加载后显示,提高了浏览器兼容性,并在审阅建议的编辑时提供了更流畅和稳定的体验。
视图打开时取消按钮总是会获得焦点,即使编辑器未获得焦点。
此前,当打开审核界面时,“建议的编辑”中的“取消”按钮会自动获得焦点,包括在页面加载时自动打开审核界面的情况。这可能会导致意外的滚动行为,例如当编辑器位于页面下方时,浏览器会在页面加载时将编辑器滚动到可见区域。
在 TinyMCE 8.4.0 中,只有当编辑器本身已经获得焦点时,“取消”按钮才会获得焦点。当审核界面自动打开时,该按钮不再获得焦点,从而避免了意外的滚动。
有关 Suggested Edits 插件的信息,请参阅:Suggested Edits。
配套的 Enhanced Skins & Icon Packs 更改
TinyMCE 8.4.0 版本包括配套的 Enhanced Skins & Icon Packs 发布。
Enhanced Skins & Icon Packs
Enhanced Skins & Icon Packs 发布包括以下更新:
重新构建了 Enhanced Skins & Icon Packs,以纳入默认 TinyMCE 8.4.0 皮肤 Oxide 中包含的更改。
有关使用 Enhanced Skins & Icon Packs 的信息,请参阅:Enhanced Skins & Icon Packs。
改进
TinyMCE 8.4.0 还包括以下改进:
link 和 image 对话框的文件上传功能在选择不支持的文件类型时提供反馈
在 TinyMCE 8.4.0 之前,链接和图像对话框上传选项卡中的拖放区域在用户仅插入不允许扩展名的文件时没有提供任何反馈。这使用户不确定上传是否失败或对话框是否没有响应。现在,当所有选定文件都有不允许的扩展名时,拖放区域会显示错误消息,告知用户所选文件不允许的扩展名,并提示他们选择不同的文件。
方向按钮现在始终应用于块,并且仅在设置方向时才显示为活动状态
以前,方向按钮在切换到默认方向时不会应用方向属性或样式。这可能导致非默认方向的内容显示为相反方向。
在 TinyMCE 8.4.0 中,每个方向按钮始终应用或移除所选块的方向属性,并且仅在块上显式设置方向时才显示为活动状态。
希伯来语的方向不正确
以前,语言包中的希伯来语没有正确设置从右到左 (RTL) 方向。这导致编辑器在将希伯来语设置为语言时渲染错误的方向。
在 TinyMCE 8.4.0 中,通过确保语言包中的希伯来语正确设置方向来解决了这个问题。
新增功能
TinyMCE 8.4.0 还包括以下新增功能:
新的 table_default_header_rows 和 table_default_header_cols 选项用于设置新表格的默认标题大小
以前,集成商在通过编辑器 UI 创建表格时无法设置默认标题行和列。这影响了表格的可访问性,并且需要集成商手动干预才能满足可访问性标准。新的 table_default_header_rows 和 table_default_header_cols 选项使集成商能够设置通过编辑器 UI 创建的新表格的默认标题行和列数,提供了一种满足可访问性要求的支持方式。
用于 dropzone 对话框组件的新 errorHandler 选项
在 TinyMCE 8.4.0 中,拖放区域对话框组件支持一个新的 onInvalidFiles 回调(在 changelog 中公开为 errorHandler),当所有拖放或选择的文件都有不允许的扩展名时运行。这使得在使用拖放区域的对话框(如链接和图像对话框)中对无效文件上传进行自定义错误处理成为可能。
现在可以通过新的 allow_noneditable 选项禁用不可编辑功能。
以前,不可编辑插件在 TinyMCE 6 中被转换为核心功能。该功能始终启用,没有文档记录的关闭方法,这对于集成商来说并不总是理想的。
在 TinyMCE 8.4.0 中,提供了一个新的 allow_noneditable 选项。它默认启用。当设置为 false 时,不可编辑功能被禁用,相当于在 TinyMCE 6 之前禁用插件。
新的 view_show 选项在初始化时显示指定的视图。
在 TinyMCE 8.4.0 中,新的 view_show 选项允许指定编辑器初始化时要显示的视图。该选项的行为类似于 sidebar_show,但对于视图具有优先权;可以配置侧边栏和视图在初始化时显示。
新的 content_id 编辑器选项用于唯一标识编辑的文档
以前,没有支持的编辑器选项用于在编辑器配置中为正在编辑的文档提供稳定的标识符。
在 TinyMCE 8.4.0 中,提供了可选的 content_id 字符串选项。集成可以将此选项设置为唯一标识文档的值(例如数据库记录 id)。当启用 TinyMCE AI 插件时,content_id 将聊天历史范围限定在该文档;有关详细信息,请参阅 TinyMCE AI 选项中的 content_id。
变更
TinyMCE 8.4.0 还包括以下变更:
带有多种 rgb 颜色的 border-color 样式被错误地压缩为 border
以前,当 border-color 使用多个 rgb 值(例如元素不同边的值)时,样式压缩器会错误地将它们压缩为单个 border 简写。border 简写仅支持一种颜色,因此这会产生无效的 CSS。这可能会影响表格和其他具有多色边框的元素。
在 TinyMCE 8.4.0 中,添加了一个检查,以防止在 border-color 包含多个 rgb 值时进行压缩。样式不再被压缩为无效的简写。
元素路径使用 WAI-ARIA 组语义和可访问名称
以前,元素路径容器使用 navigation 地标角色(role="navigation")且没有可访问名称。这与控件在辅助技术中的行为方式不匹配。
在 TinyMCE 8.4.0 中,元素路径使用 role="group" 并带有 aria-label(已本地化;英语为 Element Path)。有关键盘导航,请参阅 可访问导航指南。
Bug 修复
TinyMCE 8.4.0 还包括以下 bug 修复:
现在 link 对话框允许上传空文件
以前,通过链接对话框的上传选项卡上传空文件时,转换为 BlobInfo 失败,并返回关于 blob 和 base64 编码的通用、晦涩的错误信息。因此,用户无法理解失败的原因或如何解决。
在 TinyMCE 8.4.0 中,空文件上传现在由链接对话框本身处理,当选择空文件时会显示清晰的用户友好错误消息。用户会收到解释问题的具体错误,而不是通用的转换错误。
捆绑的内容 CSS 现在会加载到预览 iframe 中
以前,当编辑器内容 CSS 被捆绑时,它不会加载到预览 iframe 中。这导致编辑器内容区域与用户在预览对话框、建议编辑视图和修订历史视图中看到的内容存在视觉不匹配。
在 TinyMCE 8.4.0 中,修复程序会检查内容 CSS 是否作为捆绑资源可用,并通过样式标签将其应用到预览 Iframe。捆绑的内容 CSS 现在已正确加载到预览 Iframe 中。
尝试移除位于 contentEditable="false" 元素之后的链接将无法完成。
在 TinyMCE 的以前版本中,尝试移除位于 `contentEditable="false" (CEF) 元素之后的链接可能会失败,因为该操作流程创建了一个书签,该书签规范化了选区并将其移到了 CEF 中;一旦光标位于 CEF 内,选区检查就会阻止链接移除操作(以及其他基于选区的操作)的运行。
TinyMCE 8.4.0 通过在创建书签之前捕获选区目标来解决这个问题,并反转了之前的顺序,确保在规范化之前复制选区,确保选区目标保持有效并且链接移除功能按预期工作。
部分格式未应用到多级列表中的项目。
以前,当对多级列表应用格式(如背景、粗体、斜体、下划线或删除线)并在二级列表之前添加新项目时,新项目可能会丢失部分格式。这是因为在包含嵌套列表的列表项中创建新行有时会删除包含所应用样式的空元素。
在 TinyMCE 8.4.0 中,更新了删除逻辑,以避免在同时包含空元素(样式)和嵌套列表的列表项中插入新行时删除这些元素。现在,向多级列表添加新项目时,格式会按预期保留。
当 table_style_by_css 为 false 时,通过表格属性设置宽度未生效。
以前,当 table_style_by_css 设置为 false 时,通过表格属性对话框更新表格宽度不会应用宽度属性。对话框仅在使用 CSS 样式时应用宽度,这破坏了依赖 HTML 属性进行表格大小调整的用户的该功能。
在 TinyMCE 8.4.0 中,通过表格属性对话框更新宽度现在可确保在 table_style_by_css 为 false 时正确应用宽度属性。表格对话框对基于属性和基于样式的宽度设置均能按预期工作。
使用块/解除块 API 时对话框未保留焦点。
以前,当对话框被阻止(例如在加载时)然后解除阻止时,加载微调器会消失,而不会自动聚焦其他任何元素。因此,焦点完全脱离了编辑器。当使用内联编辑器时,这会导致对话框和编辑器 UI 的其余部分消失。
在 TinyMCE 8.4.0 中,解除阻止对话框现在会自动聚焦第一个可聚焦元素,与打开对话框时相同。这防止了在使用内联编辑器时对话框和编辑器 UI 的其余部分消失。
切换列表时出现选择问题
此前,反复切换列表格式(例如在项目符号和有序列表之间切换)可能会导致所选内容意外扩展,包括最初未选中的内容。所选内容会跳到相邻行,并随着每次切换而扩大,使得难以仅对目标项目应用列表更改。
在 TinyMCE 8.4.0 中,当所选内容未折叠时,选择逻辑不再考虑强制根块(forced root block)。这防止了所选内容扩展到预期列表项之外,因此可以在不发生意外选择更改的情况下切换列表格式。
具有无单位 width 或 height 属性的表格无法正确调整大小。
此前,使用无单位 width 或 height 属性(例如,不含 px 或 % 的数值)的表格无法正确调整大小。这些表格的调整大小手柄和列操作无法按预期工作。
在 TinyMCE 8.4.0 中,表格调整大小逻辑可以正确处理无单位的 width 和 height 属性。现在,无论表格尺寸如何指定,都可以按预期调整大小和修改表格。
工具栏错误地使用了 role“group”而非“toolbar”。工具栏组错误地使用了 role“toolbar”而非“group”。
此前,工具栏被错误地赋予了 role group 而非 toolbar,工具栏组则被错误地赋予了 role toolbar 而非 group。这导致屏幕阅读器的语义具有误导性,用户会听到多个“工具栏”,但没有清晰的分组结构,也没有可访问名称。
在 TinyMCE 8.4.0 中,已修正 ARIA 角色,工具栏使用 role="toolbar",工具栏组使用 role="group"。这改善了无障碍性和屏幕阅读器的行为。
如果内容足够长,带有 matchWidth: true 的下拉菜单会出现在其父级左侧
此前,当字段值溢出视口右边缘时,带有 matchWidth: true 的下拉菜单可能会位于输入框左侧,例如将长 URL 粘贴到图像对话框源字段时。错位范围从轻微偏移到菜单紧贴视口左边缘。下拉菜单宽度受限以匹配输入,但该限制后菜单未重新定位,因此列表不再与字段对齐,看起来不连贯。
在 TinyMCE 8.4.0 中,每当下拉菜单宽度受限时,定位逻辑现在会触发重新定位。下拉菜单可按预期与输入保持对齐。
列表中的某些删除键盘事件无法阻止
在 TinyMCE 8.4.0 中,发现一个问题:由于按键处理程序在编辑器设置阶段之前注册,且未验证事件是否已被阻止,列表中的某些删除键盘事件无法阻止。因此,尝试拦截和防止选择删除无效,限制了对列表行为的自定义和控制。
TinyMCE 8.4.0 通过将按键处理程序注册更新为在 init 阶段进行来解决这个问题,并且现在会有额外检查以确保尊重之前已被阻止的事件。
在 li 中删除所选内容不会触发 beforeinput。
此前,删除列表项中的所选内容或在列表项开头按退格键不会触发原生 beforeinput 事件。编辑器的列表按键处理程序在执行删除前阻止了 keydown 事件,这也抑制了 beforeinput 事件。这影响了依赖 beforeinput 来拦截或自定义列表中删除行为的集成和插件。
在 TinyMCE 8.4.0 中,编辑器现在会在执行列表项删除操作前分发合成 beforeinput 事件。处理程序可以对此事件调用 preventDefault(),以按预期拦截删除操作。
安全修复
TinyMCE 8.4.0 包含针对以下安全问题的一个修复:
rawtext 上下文中的属性净化绕过
在 跨站脚本 (XSS) 中发现一个漏洞,该漏洞存在于 DOMPurify 中,影响了 TinyMCE 8.4.0 之前的版本。该问题是由于 DOMPurify 允许攻击者在某些 rawtext 上下文中绕过属性净化,当净化后的输出被放置在这些上下文中时,可能会导致不正确的净化。
受影响版本
DOMPurify
3.1.3至3.3.1DOMPurify
2.5.3至2.5.8
漏洞
rawtext 上下文中的属性净化绕过 (CVE-2026-0540):允许攻击者通过利用
SAFE_FOR_XML正则表达式中缺失的 rawtext 元素来绕过属性净化。
GHSA:GitHub 公告
CVE:CVE-2026-0540