won*_*ng2 50 javascript google-chrome-extension
我正在编写Chrome扩展程序,我需要在我的代码中获取扩展程序的ID,因此我不需要每次都手动更改它.我怎样才能做到这一点?
ser*_*erg 78
你可以用两种不同的方式得到它(不需要额外的权限):
使用运行时api: var myid = chrome.runtime.id;
使用i18n api: var myid = chrome.i18n.getMessage("@@extension_id");
但是你不需要它来打开页面,因为chrome.tabs.create()(和其他一些人)理解相对路径.
因此,index.html要从您的扩展文件夹打开,您应该使用:
chrome.tabs.create({url: "index.html"});
Run Code Online (Sandbox Code Playgroud)
如果你正在做本地化的事情,看起来扩展机制提供了一些占位符来访问你的扩展ID:
如果您只是尝试访问扩展程序的本地文件的URL,您可以使用 chrome.extension.getURL("some file name");
如果你有其他理由需要知道扩展的ID,我不确定是否有一种直接的方式从扩展本身获取它.从我头脑中找到的两种方法是使用chrome.extension.getURL("some file name")然后从返回的URL中解析出扩展ID - 或者使用chrome.management.getAll()并循环遍历所有已安装的扩展,直到您发现使用匹配name然后访问id:
在WebExtensions中,您有两个选择:
chrome.runtime.idchrome.i18n.getMessage("@@extension_id")在Chrome和Opera中,它们将返回相同的值,但在Firefox中则有所不同。
在Firefox中,chrome.runtime.id将返回所谓的“扩展ID”,但chrome.i18n.getMessage("@@extension_id")将返回“内部UUID”。所有用户的扩展ID均相同,但内部UUID在安装扩展时创建,并且每个用户唯一。
根据上下文,扩展名ID可能不是您想要的。例如,Firefox使用内部UUID填充origin标题,而不是扩展ID。
示例1:Firefox 61中的Ghostery
chrome.runtime.id --> "firefox@ghostery.com"
chrome.i18n.getMessage("@@extension_id") --> "e3225586-81a0-47c3-8612-d95fb0c2a609"
Run Code Online (Sandbox Code Playgroud)
对于fetch扩展中的请求,Firefox将添加标题
origin: moz-extension://e3225586-81a0-47c3-8612-d95fb0c2a609
Run Code Online (Sandbox Code Playgroud)
示例2:Chrome中的Ghostery
chrome.runtime.id --> "mlomiejdfkolichcflejclcbmpeaniij"
chrome.i18n.getMessage("@@extension_id") --> "mlomiejdfkolichcflejclcbmpeaniij"
Run Code Online (Sandbox Code Playgroud)
对于fetch扩展程序中的请求,Chrome将添加标题
origin: chrome-extension://mlomiejdfkolichcflejclcbmpeaniij
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19683 次 |
| 最近记录: |