这些是 Tiny Cloud 和 TinyMCE Enterprise 的发布说明。有关 TinyMCE 最新社区版本的信息,请参阅 TinyMCE 变更日志。

概述

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 写作工具的期待:

  • 聊天图标 Chat:基于上下文的对话、持久历史记录,以及理解文档的帮助功能。

  • 审阅图标 Review:面向长内容与编辑标准的校对与结构化质量检查。

  • 快速操作图标 Actions:面向日常任务的快速、可重复转换(语气、长度、清晰度等)。

UI 背后是生产可用的 TinyMCE AI API,支持 JWT 认证、细粒度权限与多种模型,也可用于您的更广泛应用。

对用户意味着什么(该界面所面向的成果):

  • 无需离开编辑器即可推进草稿并调整语气。

  • 通过引导式流程进行摘要、调整长度并提升清晰度。

  • 通过权限与审阅式工作流保持品牌与策略护栏的可控性。

文档(针对 TinyMCE AI):

现有付费计划客户可通过 客户门户 申请功能完整的免费试用。

配套的 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。

以前,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 选项的 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 图像。

以前,由于 Uploadcare 对 SVG 文件处理施加了限制,无法通过 Media Optimizer 插件上传 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 中,仅当编辑器本身已获得焦点时,“取消”按钮才会获得焦点。当审核自动打开时,该按钮不再获得焦点,从而防止了意外滚动。

有关建议编辑插件的信息,请参阅:建议编辑。

随附的增强型皮肤和图标包变更

TinyMCE 8.4.0 版本随附了增强型皮肤和图标包的配套版本发布。

增强型皮肤和图标包

增强型皮肤和图标包版本包含以下更新:

对增强型皮肤和图标包进行了重建,以纳入同样已合并到默认 TinyMCE 8.4.0 皮肤 Oxide 中的变更。

有关使用增强型皮肤和图标包的信息,请参阅:增强型皮肤和图标包。

改进

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 回调(在更新日志中公开为 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 会将聊天历史记录限定在该文档范围内;详情请参阅 content_id in the TinyMCE AI options。

变更

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 中,元素路径使用带有 aria-label 的 role="group"(已本地化;英文为 Element Path)。关于键盘导航,请参阅 无障碍导航指南。

Bug 修复

TinyMCE 8.4.0 还包含以下 Bug 修复:

现在 link 对话框允许上传空文件

此前,通过链接对话框的上传选项卡上传空文件时,转换为 BlobInfo 的操作会失败,并返回一个关于 blob 和 base64 编码的通用且晦涩的错误信息。因此,用户无法理解导致失败的原因或如何解决该问题。

在 TinyMCE 8.4.0 中,空文件上传现在由链接对话框自身处理,当用户选择空文件时,会显示清晰、友好的错误消息。用户会收到解释问题的具体错误,而非通用的转换错误。

打包的内容 CSS 现在会加载到预览 iframe 中

此前,当编辑器内容 CSS 被打包时,它不会加载到预览 iframe 中。这会导致编辑器内容区域与用户在 Preview 对话框、Suggested Edits 视图和 Revision History 视图中看到的效果出现视觉不匹配。

在 TinyMCE 8.4.0 中,修复方案会检查内容 CSS 是否作为打包资源可用,并通过 style 标签将其应用于预览 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 Properties 设置宽度不生效。

此前,当 table_style_by_css 设置为 false 时,通过 Table Properties 对话框更新表格宽度不会应用 width 属性。该对话框仅在使用 CSS 样式时应用宽度,这破坏了依赖 HTML 属性调整表格大小的用户的功能。

在 TinyMCE 8.4.0 中,通过 Table Properties 对话框更新宽度现在可确保在 table_style_by_css 为 false 时正确应用 width 属性。表格对话框在基于属性和基于样式的宽度设置中均能按预期工作。

使用 block/unblock API 时,对话框未保留焦点。

此前,当对话框被阻止(例如,在加载期间)然后解除阻止时,加载旋转图标会消失,且不会自动聚焦到其他任何元素。因此,焦点完全脱离了编辑器。当使用 inline 编辑器时,这会导致对话框和编辑器界面的其余部分消失。

在 TinyMCE 8.4.0 中,解除阻止对话框时会自动聚焦第一个可聚焦元素,与打开对话框时相同。这避免了使用 inline 编辑器时对话框和编辑器界面的其余部分消失的情况。

切换列表导致选择问题

以前,反复切换列表格式(例如,在项目符号列表和有序列表之间切换)可能会导致选择范围意外扩展,包括最初未选中的内容。选择范围会跳到相邻行,并随着每次后续切换而扩展,使得很难仅将列表更改应用于预期的项目。

在 TinyMCE 8.4.0 中,当选择范围未折叠时,选择逻辑不再考虑强制根块。这防止了选择范围扩展到预期的列表项之外,因此可以切换列表格式而不会发生意外的选择更改。

具有无单位宽度或高度属性的表格无法正确调整大小。

以前,使用无单位宽度或高度属性(例如,没有 px 或 % 的数值)的表格无法正确调整大小。对于这些表格,调整大小手柄和列操作的表现不符合预期。

在 TinyMCE 8.4.0 中,表格调整大小逻辑可以正确处理无单位宽度和高度属性。现在,无论其尺寸如何指定,都可以按照预期调整和修改表格大小。

工具栏错误地使用了角色 "group" 而不是 "toolbar"。工具栏组错误地使用了角色 "toolbar" 而不是 "group"。

以前,工具栏被错误地赋予了角色 group 而不是 toolbar,而工具栏组被错误地赋予了角色 toolbar 而不是 group。这导致屏幕阅读器的语义具有误导性,因为用户听到了多个“工具栏”,却没有清晰的分组结构,也没有可访问的名称。

在 TinyMCE 8.4.0 中,ARIA 角色已得到修正,因此工具栏使用 role="toolbar",工具栏组使用 role="group"。这提高了可访问性和屏幕阅读器的表现。

如果内容足够长,设置了 matchWidth: true 的下拉菜单会位于其父级的左侧

以前,当字段值溢出到视口的右边缘之外时(例如,当将一个长 URL 粘贴到图像对话框的源字段中时),设置了 matchWidth: true 的下拉菜单可能会位于输入框的左侧。错位范围从轻微偏移到菜单紧贴视口左边缘不等。下拉菜单的宽度被限制为与输入框匹配,但在该限制之后未对菜单重新定位,因此列表不再与字段对齐,看起来脱节。

在 TinyMCE 8.4.0 中,现在只要下拉菜单的宽度受到限制,定位逻辑就会触发重新定位。下拉菜单可以如预期般与输入框保持对齐。

列表中的某些删除键盘事件无法阻止

在 TinyMCE 8.4.0 中,发现了一个问题,即列表中的某些删除键盘事件无法阻止,因为键处理程序是在编辑器设置阶段之前注册的,并且没有验证事件是否已被阻止。结果,拦截和防止选择删除的尝试无效,限制了对列表行为的自定义和控制。

TinyMCE 8.4.0 通过将键处理程序的注册更新为在 init 阶段进行来解决此问题,并且额外的检查现在确保尊重之前已阻止的事件。

删除 li 中的选择范围不会触发 beforeinput。

以前,删除列表项内的选择范围或在列表项开头按 Backspace 键不会触发原生的 beforeinput 事件。编辑器的列表键处理程序在执行删除之前阻止了 keydown 事件,这也抑制了 beforeinput 事件。这影响了依赖 beforeinput 来拦截或自定义列表中删除行为的集成和插件。

在 TinyMCE 8.4.0 中,编辑器现在在执行列表项内的删除操作之前会发送一个合成的 beforeinput 事件。处理程序可以在此事件上调用 preventDefault() 来如预期般拦截删除操作。

安全修复

TinyMCE 8.4.0 包含针对以下安全问题的一个修复:

rawtext 上下文中的属性净化绕过

在 跨站脚本 (XSS) 中发现了一个漏洞,该漏洞影响了 8.4.0 之前版本的 TinyMCE。该问题的原因是 DOMPurify 允许攻击者在特定的 rawtext 上下文中绕过属性净化,当经过净化的输出被放置在这些上下文中时,可能会导致净化不当。

受影响的版本

  • DOMPurify 3.1.3 到 3.3.1

  • DOMPurify 2.5.3 到 2.5.8

漏洞

  • rawtext 上下文中的属性净化绕过 (CVE-2026-0540):允许攻击者利用 SAFE_FOR_XML 正则表达式中缺少的 rawtext 元素来绕过属性净化。

GHSA:GitHub 安全公告

CVE:CVE-2026-0540