我知道获取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更好。
答案 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);
总体上花费的时间较少但第一次调用等同于其他调用。
击>
我们可以看到, chrome.runtime.id
获胜 。
注意#1:您可以下载扩展程序here
的zip存档注意#2:我使用performance.now()
来获得准确的时间。
注意#3:我在基准测试工具中添加了chrome.runtime.id
。谢谢Konstantin Smolyanin!
答案 2 :(得分:0)
似乎自Chrome 22以来获取扩展ID的最佳方式是内置属性chrome.runtime.id
。 See documentation.
console.log(chrome.runtime.id);