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

概述

TinyMCE 8.4.0 于 2026 年 3 月 31 日星期二发布,适用于 TinyMCE Enterprise 和 Tiny Cloud。本发布说明提供了 TinyMCE 8.4.0 变更的概览,包括:

  • 新的 Premium 插件

  • 配套的 Premium 插件变更

  • 配套的增强型 Skins & Icon Packs 变更

  • 改进

  • 新增内容

  • 变更

  • Bug 修复

  • 安全修复

新的 Premium 插件

以下新的 Premium 插件与 TinyMCE 8.4.0 一同发布。

TinyMCE AI

TinyMCE AI 是 TinyMCE 全新的 Premium AI 平台:借助开箱即用的 AI 功能,实现更快速的内容起草和更强大的编辑工作流——现在既可以作为即插即用的插件使用,也可以通过 API 进行自定义集成。

该平台围绕三种体验构建,这些体验符合团队对现代 AI 写作工具的期望:

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

  • 审核图标 审核:针对长篇幅内容和编辑标准的校对与结构化质量检查。

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

用户界面背后是一个具备生产就绪能力的 TinyMCE AI API,支持 JWT 身份验证、细粒度权限控制和多种模型,该 API 也可用于您的更广泛的应用程序中。

对用户而言这意味着什么(界面设计旨在实现的成果):

  • 无需离开编辑器即可推进草稿撰写并优化语气。

  • 通过引导式流程实现内容总结、长度调整和清晰度提升。

  • 通过权限设置和审核式工作流,始终遵循品牌和策略规范。

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 中的提及(mentions)解析器未将 @ 符号视为提及字符串的一部分。包含 @ 的用户 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 version 2 converter options

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 插件激活时,由于所有 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 图像。

以前,由于 Uploadcare 对 SVG 文件处理施加了限制,无法通过 Media Optimizer 插件上传 SVG 图像。需要在内容中包含 SVG 图形的用户无法直接上传它们。

在 TinyMCE 8.4.0 中,现在可以通过 Media Optimizer 插件上传 SVG 图像。某些 CDN 操作可能对 SVG 文件有限制;有关详细信息,请参阅 Uploadcare documentation on CDN operation limits。

有关 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 视图中的文档加载过程已更新,移除了已弃用的方法。现在文档仅在完全加载后才显示,提高了浏览器兼容性,并在审核建议编辑时提供更流畅、更稳定的体验。

视图打开时取消按钮总是获得焦点,即使编辑器未获得焦点。

以前,打开审核(包括页面加载时自动打开审核)时,Suggested Edits(建议编辑)中的 Cancel(取消)按钮会自动聚焦。这可能会导致意外的滚动行为,例如当编辑器位于页面更下方时,浏览器会在页面加载时将编辑器滚动到视图中。

在 TinyMCE 8.4.0 中,只有当编辑器本身已经聚焦时,Cancel(取消)按钮才会聚焦。当审核自动打开时,该按钮不再聚焦,从而防止了非预期的滚动。

有关 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 之前,link 和 image 对话框上传标签页中的 dropzone 在用户仅插入具有不允许扩展名的文件时,不会提供任何反馈。这让用户不确定上传是否失败或对话框是否没有响应。现在,当所有选定文件的扩展名都不允许时,dropzone 会显示错误消息,告知用户所选文件的扩展名不允许,并提示他们选择其他文件。

方向性按钮现在始终应用于块,并且只有在设置方向性时才显示为活动状态

以前,方向性按钮在切换到默认方向性时不会应用方向性属性或样式。这可能导致非默认方向性内容以相反方向显示。

在 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 中,dropzone 对话框组件支持一个新的 onInvalidFiles 回调(在更新日志中公开为 errorHandler),当所有拖放或选择的文件的扩展名都不允许时运行。这使得在使用 dropzone 的对话框(如 link 和 image 对话框)中可以对无效文件上传进行自定义错误处理。

现在可以通过新的 allow_noneditable 选项禁用 noneditable 功能。

以前,noneditable 插件在 TinyMCE 6 中转换为核心功能。该功能始终启用,并且没有记录的关闭方式,这对于集成商来说并不总是理想的。

在 TinyMCE 8.4.0 中,提供了一个新的 allow_noneditable 选项。它默认启用。当设置为 false 时,noneditable 功能被禁用,相当于在 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 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 group 语义和可访问名称

此前,元素路径容器使用 navigation 地标角色(role="navigation"),且没有可访问名称。这与控件在辅助技术下的行为不一致。

在 TinyMCE 8.4.0 中,元素路径使用 role="group",并带有 aria-label(已本地化;英文为 Element Path)。有关键盘导航,请参见 Accessible navigation guide(可访问导航指南)。

错误修复

TinyMCE 8.4.0 还包含以下错误修复:

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

此前,通过链接对话框的上传选项卡上传空文件时,转换为 BlobInfo 会失败,并返回一个关于 blob 和 base64 编码的通用且晦涩的错误。结果是用户无法理解失败的原因以及如何解决。

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

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

此前,当编辑器内容 CSS 被打包时,它不会被加载到预览 iframe 中。这导致编辑器内容区域与用户在“预览”对话框、建议编辑视图和修订历史视图中看到的内容出现视觉不匹配。

在 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_style_by_css 设置为 false 时,通过表格属性对话框更新表格宽度不会应用宽度属性。对话框仅在使用 CSS 样式时应用宽度,这破坏了依赖 HTML 属性进行表格大小调整的用户功能。

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

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

此前,当对话框被阻止(例如,在加载期间)然后解除阻止时,加载旋转指示器会消失而不会自动聚焦任何其他元素。结果是焦点完全离开了编辑器。当使用内联编辑器时,这会导致对话框和编辑器其余 UI 消失。

在 TinyMCE 8.4.0 中,解除对话框阻止现在会自动聚焦第一个可聚焦元素,这与打开对话框时的行为相同。这防止了在使用内联编辑器时对话框和编辑器其余 UI 消失。

切换列表导致选择问题

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

在 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 包含针对以下安全问题的一项修复:

原始文本上下文中的属性清理绕过

在DOMPurify中发现了一个跨站脚本(XSS)漏洞,该漏洞影响 TinyMCE 8.4.0 之前的版本。此问题是由于 DOMPurify 允许攻击者在某些原始文本上下文中绕过属性清理,当清理后的输出被放置在这些上下文中时,可能会导致清理不当。

受影响版本

  • DOMPurify 3.1.3 至 3.3.1

  • DOMPurify 2.5.3 至 2.5.8

漏洞

  • 原始文本上下文中的属性清理绕过 (CVE-2026-0540):允许攻击者通过利用SAFE_FOR_XML正则表达式中缺失的原始文本元素来绕过属性清理。

GHSA:GitHub 公告

CVE:CVE-2026-0540