2012-07-12 33 views
2

我喜歡chrome通過其擴展API提供的內容。 但是我總是發現自己迷失在哪個chrome版本所支持的API的叢林中,以及最後一個chrome.experimental特性何時使其支持擴展。我在哪裏可以看到哪個chrome擴展API對哪個chrome版本有效

The Chrome extension page給我一個很好的概述什麼是支持的,但沒有提到自什麼版本。 experimental API overview也是如此。例如,這種特定的API仍然是實驗性的,或者它已經在金絲雀中得到了支持。

如果我嘗試從Chrome Samples website一個示例中,我通常有一些API調用更改從chrome.experimental.foochrome.foo或者發現它根本不被支持。 (chrome.experimental.alarm發生了什麼?)這通常意味着只使用試錯法來消除所有錯誤,直到樣本生效。

tldr; 所以,我想知道是否有一個概述頁面,告訴我什麼版本,支持什麼API或什麼時候決定放棄實驗性API。如果沒有這樣的頁面,那麼對於這種情況,建議的方式或個人的方法是什麼?

回答

4

this page上,描述了從Chrome存儲庫自動生成官方文檔的過程。在同一頁面上,您還可以閱讀如何檢索舊分支的文檔。請注意,該文檔在某種程度上是不完整的:儘管它們仍然存在(如onRequest),但已棄用的API已立即包含在內。

What's New in Extensions是API更改和更新的簡要列表(不包括大多數實驗性API)。它必須手動編輯,所以它並不總是最新的。例如,當前穩定的版本是20,但是頁面的最後一項是19

如果你真的需要一個包含所有API變更單頁,以下方法可用於:

  • 第一,安裝所有Chrome版本。自動完成時,這並不耗時:我編寫了一個腳本,可以自動安裝Chrome,它可以複製以前的配置文件:請參閱this answer
  • 測試爲特徵的存在:
    1. 寫一個清單文件,其中包括所有permissions(無法識別的權限總是被忽略)。
    2. Chrome 18+:複製清單版本1和2的擴展。某些API在清單版本1中被禁用(example)。
    3. 測試某項功能是否已實施且性能如預期爲非常耗時。出於這個原因,你最好測試一下API的存在。
      合理的做法是遞歸循環遍歷chrome的屬性,並記錄結果(顯示給用戶/發佈到服務器)。
  • 測試過程。使用以下方法之一:
    • 使用單個Chrome配置文件,並從最低版本開始測試。
    • 爲每個Chrome版本使用一個單獨的配置文件,以便您可以並排測試多個Chrome版本。
  • 後處理:解釋結果。

實施例的代碼來獲得信息:

/** 
* Returns a JSON-serializable object which shows all defined methods 
* @param root Root, eg. chrome 
* @param results Object, the result will look like {tabs:{get:'function'}} 
*/ 
function getInfo(root, results) { 
    if (root == null) return results; 
    var keys = Object.keys(root), i, key; 
    results = results || {}; 
    for (i=0; i<keys.length; i++) { 
     key = keys[i]; 
     switch (typeof root[key]) { 
      case "function": 
       results[key] = 'function'; 
      break; 
      case "object": 
       if (subtree instanceof Array) break; // Exclude arrays 
       var subtree = results[key] = {}; 
       getInfo(root[key], subtree);   // Recursion 
      break; 
      default: 
       /* Do you really want to know about primitives? 
       * (Such as chrome.windows.WINDOW_ID_NONE) */ 
     } 
    } 
    return results; 
} 
/* Example: Get data, so that it can be saved for later use */ 
var dataToPostForLaterComparision = JSON.stringify(getInfo(chrome, {})); 
// ... 
相關問題