检索Google Chrome扩展程序ID的最佳方法是什么?

时间:2012-09-18 06:14:03

标签: javascript google-chrome-extension

我知道获取Google Chrome扩展程序ID的两种方法:

chrome.app.getDetails().id;

chrome.i18n.getMessage('@@extension_id');

其中一个有任何缺点吗?

我倾向于使用第一个,因为它更短但是谁知道。我可能错了。

----编辑----

因为我是唯一关心的人,所以这就是我做的基准测试:

console.time('t1');
for (var i=0; i < 10000; i++) { chrome.app.getDetails().id; }; 
console.timeEnd('t1');

console.time('t2');
for (var i=0; i < 10000; i++) { chrome.i18n.getMessage('@@extension_id'); }; 
console.timeEnd('t2');

结果如下:

t1: 5190.766ms

t2: 860.697ms

看起来使用i18n总体上要快得多但是第一个在开始时更快,在执行3或4次之后,i18n更好。

3 个答案:

答案 0 :(得分:3)

尝试通过类似的查询: How to reference the version information in a Google Chrome extension?

在那里,你可以更广泛地了解你正在使用的第一个电话。

    chrome.app.getDetails().id;

答案 1 :(得分:2)

最后,我创建了一个小型Chrome扩展程序来测试三种已知方法来检索Chrome扩展程序ID:

  • chrome.app.getDetails().id;
  • chrome.i18n.getMessage('@@extension_id');
  • chrome.extension.getURL('/').slice(19, -1);
  • chrome.runtime.id;

<击> 正如您在下面的结果中看到的那样,chrome.extension.getURL('/').slice(19, -1);总体上花费的时间较少第一次调用等同于其他调用。

Benchmark image for Google Chrome 27.0.1430.0 (Official Build 186115) dev

我们可以看到, chrome.runtime.id获胜

注意#1:您可以下载扩展程序here

的zip存档

注意#2:我使用performance.now()来获得准确的时间。

注意#3:我在基准测试工具中添加了chrome.runtime.id。谢谢Konstantin Smolyanin!

答案 2 :(得分:0)

似乎自Chrome 22以来获取扩展ID的最佳方式是内置属性chrome.runtime.idSee documentation.

console.log(chrome.runtime.id);