实验性、已废弃和已过时

这些术语通常与技术和规范相关联,并在 MDN Web Docs 上用于标记技术的状态。关于这些术语的定义,MDN Web Docs 与 浏览器兼容性数据 (BCD) 仓库保持一致。这些术语在 MDN Web Docs 的使用背景下将在下面进行描述。

实验性

当一项技术在 MDN Web Docs 上被描述为实验性时,这意味着该技术是新兴的、不成熟的,并且目前正在被添加到 Web 平台(或正在被考虑添加)。将一项技术标记为实验性,表明读者在使用该技术进行任何类型的生产项目(即非演示或实验项目)时应仔细考虑。我们鼓励读者尝试实验性功能,并向浏览器供应商和标准作者提供反馈。

对于标记为实验性的技术,以下一项或多项条件适用

  • 它仅在一个主要现代浏览器渲染引擎的发布版本中实现并默认启用。
  • 它仅通过配置更改(例如偏好设置或标志)受支持,无论支持的渲染引擎数量如何。
  • 其定义规范可能会发生重大且向后不兼容的更改(即,它可能会破坏依赖于该功能的现有代码)。

注意:即使某项功能仅在一个渲染引擎上发布,但如果其他渲染引擎的预览版本也支持它(或通过设置偏好设置或标志可用),它仍被视为实验性功能。

某项技术的实验性状态可能会在满足以下一项或多项条件时过期

  • 它在两个或更多主要浏览器渲染引擎中默认受支持。
  • 它在一个浏览器渲染引擎中默认支持两年或更长时间,并且没有发生重大更改。
  • 其定义规范不太可能发生破坏兼容性的更改。

有关这些条件的示例,请参阅 实验性标志 BCD 文档。

通常,如果一项技术在多个主流浏览器中得到支持,那么规范就会稳定,但这并非总是如此。另一方面,有些技术可能有稳定的规范,但在浏览器中没有原生支持。IMSC 例如,通过 JavaScript polyfill 使用。

一项属于活动规范或标准化流程一部分且未标记为已弃用的功能或技术,被称为处于标准轨道

已弃用

MDN Web Docs 上的已弃用一词用于标记不再推荐的 API 或技术。已弃用的 API 或技术将来可能会被移除,或者可能仅为兼容性目的而保留,并且仍可能有效。我们建议避免使用标记为已弃用的功能。

有关已弃用定义的更多信息,请参阅 已弃用标志 BCD 文档。

已废弃

在 MDN Web Docs 上,已废弃一词过去用于表示一个 API 或技术,它不仅不再推荐,而且在浏览器中也不再实现。由于已废弃已弃用之间的区别不是很明显,因此我们在 MDN Web Docs 上不再使用已废弃一词。

注意:如果您遇到任何已废弃的用法,应将其删除或替换为已弃用一词。

移除内容的指南

有时,在开发新规范的过程中,或者在 HTML 等活动标准演变的过程中,会将新的元素、方法、属性等添加到规范中,并保留一段时间,然后删除。有时这发生得很快,有时这些新项目会在规范中保留数月甚至数年才被删除。这使得决定如何处理从规范中删除某个项目变得棘手。

以下是一些指南,可帮助您决定在某个项目从规范中删除时该怎么做。

注意:在本次讨论中,“项目”一词用于指代规范的任何组成部分:元素的元素或属性,接口或任何单独的方法,属性,或接口的其他成员,等等。

如果该项目从未实现

如果该项目从未在任何浏览器的发布版本中实现,即使是通过偏好设置或标志,也要从文档中删除对该项目的所有引用。

  • 如果该项目有任何仅描述该项目的文档页面(例如 RTCPeerConnection.close()),请删除该页面。如果被移除的项目是一个接口,这意味着也要删除描述该接口属性和方法的任何子页面。
  • 从任何属性、特性、方法等的列表中删除该项目。例如,对于接口的方法,这意味着从接口概述页面的“方法”部分删除它。
  • 搜索该接口、元素等的概述页面的文本,查找对已移除项目的任何引用。删除这些引用,确保不要留下语法错误或其他文本问题。这可能意味着不仅要删除单词,还要重写句子或段落以使其更有意义。如果描述该项目的使用长度较长,也可能需要删除整个内容部分。
  • 同样,查找在相关 API 或技术指南和教程中对该项目的任何讨论。删除这些引用,确保不要留下语法错误或其他文本问题。这可能意味着不仅要删除单词,还要重写句子或段落以使其更有意义。如果描述该项目的使用长度较长,也可能需要删除整个内容部分。
  • 搜索 MDN Web Docs 中对已移除项目的引用,以防在其他地方有讨论。不太可能存在,因为如果它从未被实现,它不太可能被广泛讨论。也请删除这些提及。
  • 如果 浏览器兼容性数据存储库 中的 JSON 文件包含已移除项目的相关数据,请从 JSON 代码中删除这些对象,并提交一个包含该更改的 pull request,在提交消息和 pull request 描述中解释原因。请注意检查,以免在执行此操作时破坏 JSON 语法。

如果该项目在某个浏览器中通过标志实现

如果该项目在一个或多个浏览器的任何发布版本中实现,但通过偏好设置或标志实现,请不要立即从文档中删除该项目。而是,将该项目标记为已弃用,如下所示

  • 通过提交 pull request 来更新浏览器兼容性数据存储库中该项目状态的数据。
  • 搜索该接口、元素等的概述页面的信息性文本,查找对已移除项目的任何引用。在适当的地方添加警告框,内容类似“[项目] 已从规范中移除,并将很快从浏览器中移除。请参阅 [页面链接] 以了解新的实现方式。”
  • 同样,查找在相关 API 或技术指南和教程中对该项目的任何讨论。添加类似的警告。
  • 搜索 MDN Web Docs 中对已移除项目的引用,以防在其他地方有讨论。也在那里添加类似的警告框。
  • 将来某个时候,可能会做出实际从文档中移除该项目的决定;我们通常不做这件事,但如果该项目特别未被利用或不感兴趣,我们可能会决定这样做。
  • 更新 浏览器兼容性数据存储库 中任何相关的条目,以反映受影响项目(的)的过时。

如果该项目在浏览器中未通过标志实现

如果该项目在一个或多个浏览器的发布版本中实现,而无需偏好设置或标志,请将该项目标记为已弃用,如下所示

  • 通过提交 pull request 来更新浏览器兼容性数据存储库中该项目状态的数据。
  • 搜索该接口、元素等的概述页面的信息性文本,查找对已移除项目的任何引用。在适当的地方添加警告框,内容类似“[项目] 已从规范中移除且已弃用。它将来可能会从浏览器中移除,因此您不应使用它。请参阅 [页面链接] 以了解新的实现方式。”
  • 同样,查找在相关 API 或技术指南和教程中对该项目的任何讨论。添加类似的警告。
  • 搜索 MDN Web Docs 中对已移除项目的引用,以防在其他地方有讨论。也在那里添加类似的警告框。
  • 这些项目不太可能很快从文档中移除,即使移除。
  • 更新 浏览器兼容性数据存储库 中任何相关的条目,以反映受影响项目(的)的弃用。

请在上述指南中建议的警告信息措辞和其他文本更改方面,运用常识。不同的项目需要不同的措辞和处理方式。如有疑问,请随时在 MDN Web Docs 聊天室 中寻求建议。

记录规范冲突的指南

有时,但很少见,可能存在不同规范版本(通常是 W3C 与 WHATWG)之间的冲突。例如,一个版本可能将某个功能列为已弃用,而另一个版本则不。在这种情况下,请考虑实际情况,即考虑浏览器实际在做什么,并写一个“重要”的注释来总结最新的状态。例如,截至 2019 年 1 月,inputmode 全局属性存在冲突,其总结如下

警告:规范冲突:WHATWG 规范列出了 inputmode,并且现代浏览器正在努力支持它。然而,W3C HTML 5.2 规范不再列出它(即将其标记为已废弃)。您应将 WHATWG 定义视为正确,直到达成共识。

另见