實驗性、已廢棄和已過時

這些術語通常與技術和規範相關聯,並在 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 定義視為正確,直到達成共識。

另見