更新 Firefox 5 的擴充套件

本文概述了您可能需要對擴充套件進行哪些更改,以便它們能在 Firefox 5 中正常工作。您可以在 Firefox 5 for developers 中找到 Firefox 5 中與開發者相關的更改的完整列表。

您需要做些什麼嗎?

如果您的擴充套件分發在 addons.mozilla.org (AMO) 上,它已經過自動相容性驗證工具的檢查。不使用 Firefox 5 中更改的 API 且沒有二進位制元件(需要為每個主要的 Firefox 版本重新編譯)的擴充套件已自動在 AMO 上更新,以表明它們可以在 Firefox 5 中工作。

所以,您應該首先訪問 AMO,檢視您的擴充套件是否需要進行任何工作。

注意: 即使您的擴充套件已自動升級,您仍應在 Firefox 5 上進行測試。有些邊緣情況可能無法自動檢測到。

一旦您確認需要進行更改,請返回此頁面繼續閱讀。

由於開發週期很短(即使是我們的快速釋出週期;Firefox 5 由於時間原因,其釋出計劃 extra-short),Firefox 5 中的 UI 相關更改非常少。

確定 UI 語言

過去,window.navigator.language DOM 屬性反映了 Firefox 使用者介面的語言。現在情況不再如此;相反,它反映了當前文件的 Accept-Language 標頭的值。如果您需要檢測 UI 語言,則應檢視 general.useragent.locale 首選項的值。

DOM 更改

Window.setTimeout()WorkerGlobalScope.setTimeout()Window.setInterval()WorkerGlobalScope.setInterval() 的行為已發生變化;允許的最小時間已更改,並且 取決於具體情況。此外,在不活躍標籤頁(即使用者當前未檢視的標籤頁)中,超時和間隔被限制為每秒一次。

JavaScript 更改

以下關鍵字現在在 JavaScript 中是保留字,即使您不在 嚴格模式 下。

  • class
  • enum
  • export
  • extends
  • import
  • super

不要在程式碼中的任何地方使用這些關鍵字,即使是作為物件屬性名。

注意: 這是 AMO 的自動升級工具可能無法始終捕獲的事項之一,因此如果您的擴充套件已自動升級但仍無法正常工作,請檢查您的程式碼是否存在這些問題。

介面更改

在啟動時例項化某些服務,包括 nsICertOverrideService,可能會導致 Firefox 無法使用(Firefox bug 650858)。僅當您嘗試在 load 事件觸發之前例項化服務時才會發生這種情況。

要解決此問題,請將這些服務的例項化移至您的 load 事件處理程式中。

js
var MyObject = {
  comp: null,
  init() {
    this.comp = Components.classes["…"].getService(/* … */);
  },
  // …
};
window.addEventListener(
  "load",
  function () {
    MyObject.init();
  },
  false,
);

當然,一個更好的解決方案是遵循效能最佳實踐,即在需要使用服務時才例項化它們。

另見