这些是Tiny Cloud和TinyMCE Enterprise的发行说明。有关TinyMCE最新社区版本的信息,请参阅 TinyMCE Changelog。
概述
TinyMCE 8.4.0于2026年3月31日星期二面向TinyMCE Enterprise和Tiny Cloud发布。本发行说明概述了TinyMCE 8.4.0的变更内容,包括:
新的 Premium 插件
配套的 Premium 插件变更
配套的增强皮肤与图标包变更
改进
新增功能
变更
Bug 修复
安全修复
新的 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):
Introduction to TinyMCE AI — 能力、特性以及平台如何协同构成。
TinyMCE AI plugin — 安装、配置以及开箱即用的编辑器体验。
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。
以前,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> 中的内容被正确编码。
新增参数 fullpagehtml 到 editor.getContent() 和 editor.setContent() API,以便在 full page 插件激活时仅获取/设置内容的 body 部分。
以前,在 Full Page HTML 插件激活时,设置和获取编辑器内容可能会很麻烦,因为所有 API 调用都包含完整的 HTML 文档,即使不需要。尝试仅获取和操作 body 内容(例如,用于保存)没有文档记录,并且需要变通方法。
在 TinyMCE 8.4.0 中,editor.getContent() 和 editor.setContent() API 添加了 fullpagehtml 选项。当设置为 false 时,此选项允许在 Full Page HTML 插件激活时仅获取和设置 body 内容,而不影响完整的文档结构。文档现在更能抵抗意外更改,并且可以检索或更新内容而不包含完整的 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 图像现在可以上传。
以前,SVG 图像不能通过 Media Optimizer 插件上传,因为 Uploadcare 对 SVG 文件处理施加了限制。需要在内容中包含 SVG 图形的用户无法直接上传它们。
在 TinyMCE 8.4.0 中,SVG 图像现在可以通过 Media Optimizer 插件上传。一些 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 视图中的文档加载过程已更新,移除了已弃用的方法。文档现在仅在完全加载后才显示,提高了浏览器兼容性,并在审查建议编辑时提供了更流畅、更稳定的体验。
视图打开时取消按钮总是获得焦点,即使编辑器没有获得焦点。
之前,只要打开建议编辑(Suggested 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 之前,当用户仅插入具有不允许的扩展名的文件时,link 和 image 对话框上传标签页中的拖放区域不会提供任何反馈。这使用户无法确定上传是否失败或对话框是否未响应。现在,当所有选择的文件都具有不允许的扩展名时,拖放区域会显示错误消息,告知用户所选文件不具有允许的扩展名,并提示用户选择其他文件。
方向按钮现在始终应用于块,并且仅在方向属性被设置时显示为激活状态
之前,方向按钮在切换到默认方向时不会应用方向属性或样式。这可能导致非默认方向的内容以相反方向显示。
在 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),当所有拖放或选择的文件都具有不允许的扩展名时运行该回调函数。这使得在采用拖放区域的对话框中(例如 link 和 image 对话框),可以对无效文件上传进行自定义错误处理。
不可编辑(noneditable)功能现在可通过新的 allow_noneditable 选项禁用
之前,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)。有关键盘导航,请参阅 可访问导航指南。
错误修复
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 时,通过表格属性对话框更新表格宽度不会应用 width 属性。对话框仅在使用 CSS 样式时应用宽度,这破坏了依赖 HTML 属性进行表格大小调整的用户的功
切换列表时出现选区问题
此前,反复切换列表格式(例如,在无序列表和有序列表之间切换)可能会意外扩展选区,包括最初未选中的内容。每次后续切换时,选区都会跳转到相邻行并不断扩展,导致难以仅对目标项应用列表更改。
在TinyMCE 8.4.0中,当选区未折叠时,选区逻辑不再考虑强制根块(forced root block)。这防止了选区扩展到目标列表项之外,因此可以切换列表格式而不会发生意外的选区更改。
具有无单位宽度或高度属性的表格无法正确调整大小。
此前,使用无单位宽度或高度属性(例如,不含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包含针对以下安全问题的一项修复:
原始文本上下文中的属性清理绕过
在跨站脚本攻击(XSS)中发现漏洞,影响8.4.0之前的TinyMCE版本。该问题是由于DOMPurify允许攻击者在特定原始文本上下文中绕过属性清理,当清理后的输出被放入这些上下文时,可能导致清理不当。
受影响版本
DOMPurify
3.1.3至3.3.1DOMPurify
2.5.3至2.5.8
漏洞
原始文本上下文中的属性清理绕过(CVE-2026-0540):允许攻击者通过利用
SAFE_FOR_XML正则表达式中缺失的原始文本元素来绕过属性清理。
GHSA:GitHub 安全公告
CVE:CVE-2026-0540