这是 Tiny Cloud 和 TinyMCE Enterprise 的发行说明。如需了解 TinyMCE 最新社区版本的信息,请参阅 TinyMCE Changelog。
概述
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 写作工具的期望:
Chat(聊天):情境化对话、持久历史记录,以及能够理解文档内容的帮助功能。
Review(审核):针对较长内容和编辑标准的校对与结构化质量检查。
Actions(操作):针对日常任务(语气、长度、清晰度等)的快速、可重复转换。
用户界面背后是一个生产就绪的 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(导出为 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(全页 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> 中的内容被正确编码。
在 Full Page HTML 插件处于活动状态时,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 选项用于 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 中,仅当编辑器本身已处于聚焦状态时,“取消”按钮才会被聚焦。当自动打开审核界面时,该按钮不再被聚焦,从而避免了非预期的滚动。
有关 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 插件在 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时,通过表格属性对话框更新表格宽度不会应用宽度属性。对话框仅在使用CSS样式时应用宽度,这破坏了依赖HTML属性调整表格大小的用户的功能。
在TinyMCE 8.4.0中,通过表格属性对话框更新宽度时,当table_style_by_css为false,宽度属性可正确应用。表格对话框对基于属性和基于样式的宽度设置均能按预期工作。
使用block/unblock API时对话框未保持焦点
此前,当对话框被阻止(例如加载时)后解除阻止时,加载动画会消失,但不会自动聚焦到任何其他元素。因此,焦点完全脱离编辑器。使用内联编辑器时,这会导致对话框及编辑器其余界面消失。
在TinyMCE 8.4.0中,解除对话框阻止时会像打开对话框时一样,自动聚焦到第一个可聚焦元素。这避免了使用内联编辑器时对话框及编辑器其余界面消失的问题。
切换列表导致选区问题
此前,重复切换列表格式(例如在项目符号列表和编号列表之间切换)可能导致选区意外扩展,包括最初未选中的内容。选区会跳到相邻行并随着每次后续切换而扩大,使得仅对目标项目应用列表更改变得困难。
在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的下拉菜单可能会位于其父级左侧
此前,带有matchWidth: true的下拉菜单在字段值溢出视口右边缘时(例如将长URL粘贴到图像对话框源字段中)可能位于输入框左侧。错位范围从轻微偏移到菜单紧贴视口左边缘。下拉菜单宽度被限制以匹配输入框,但菜单在该限制后未重新定位,因此列表不再与字段对齐,看起来脱节。
在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)中发现了DOMPurify的一个漏洞,影响8.4.0之前的TinyMCE版本。该问题是由于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