在this page上,描述了从Chrome存储库自动生成官方文档的过程。在同一页面上,您还可以阅读如何检索旧分支的文档。请注意,该文档在某种程度上是不完整的:尽管它们仍然存在(如onRequest
),但已弃用的API已立即包含在内。
What's New in Extensions是API更改和更新的简要列表(不包括大多数实验性API)。它必须手动编辑,所以它并不总是最新的。例如,当前稳定的版本是20,但是页面的最后一项是19
如果你真的需要一个包含所有API变更单页,以下方法可用于:
- 第一,安装所有Chrome版本。自动完成时,这并不耗时:我编写了一个脚本,可以自动安装Chrome,它可以复制以前的配置文件:请参阅this answer。
- 测试为特征的存在:
- 写一个清单文件,其中包括所有permissions(无法识别的权限总是被忽略)。
- Chrome 18+:复制清单版本1和2的扩展。某些API在清单版本1中被禁用(example)。
- 测试某项功能是否已实施且性能如预期为非常耗时。出于这个原因,你最好测试一下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, {}));
// ...