Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检索Google Chrome扩展ID的最佳方式是什么?_Javascript_Google Chrome Extension - Fatal编程技术网

Javascript 检索Google Chrome扩展ID的最佳方式是什么?

Javascript 检索Google Chrome扩展ID的最佳方式是什么?,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我知道两种获取Google Chrome扩展ID的方法: chrome.app.getDetails().id; chrome.i18n.getMessage('@@extension_id'); 其中一个有什么缺点吗 我倾向于使用第一个,因为它比较短,但谁知道呢。我可能错了 ----编辑--- 因为我是唯一关心这些的人,以下是我所做的工作: 控制台时间('t1'); 对于(var i=0;i

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

chrome.app.getDetails().id;
chrome.i18n.getMessage('@@extension_id');
其中一个有什么缺点吗

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

----编辑---

因为我是唯一关心这些的人,以下是我所做的工作:

控制台时间('t1'); 对于(var i=0;i<10000;i++){chrome.app.getDetails().id;}; 控制台。时间结束('t1'); 控制台时间('t2'); 对于(var i=0;i<10000;i++){chrome.i18n.getMessage('@@extension_id');}; 控制台。时间结束('t2'); 结果如下:

t1:5190.766ms
t2:860.697ms

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

尝试执行类似的查询:

在那里,您可以更广泛地了解您正在使用的第一个呼叫

    chrome.app.getDetails().id;

最后,我创建了一个小的Chrome扩展,以基准测试三种检索Chrome扩展ID的已知方法:

  • chrome.app.getDetails().id
  • chrome.i18n.getMessage('@@extension\u id')
  • chrome.extension.getURL('/').slice(19,-1)
  • chrome.runtime.id
从下面的结果中可以看到,
chrome.extension.getURL('/').slice(19,-1)
似乎总体上花费的时间较少,但第一次调用与其他调用相当。

正如我们所看到的,
chrome.runtime.id
获胜

注意#1:您可以下载扩展的zip存档

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


注#3:我在基准工具中添加了
chrome.runtime.id
。谢谢康斯坦丁·斯莫莱宁

似乎由于chrome 22,获取扩展ID的最佳方法是内置属性
chrome.runtime.ID


谢谢你的回答。你是说使用chrome.app.getDetails()是不好的,因为作用域太大了?@Francois…不,这是我说的方式,你可以在阅读链接后了解其他内容。:)
console.log(chrome.runtime.id);