2012-07-12 34 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, {})); 
// ... 
相关问题