Как получить идентификатор моего расширения из JavaScript? - PullRequest
48 голосов
/ 16 июня 2011

Я пишу расширение для Chrome, мне нужно получить идентификатор своего расширения в своем коде, поэтому мне не нужно каждый раз менять его вручную.Как я могу это сделать?

Ответы [ 3 ]

75 голосов
/ 16 июня 2011

Вы можете получить его так (без дополнительных разрешений) двумя различными способами:

  1. Использование API времени выполнения: var myid = chrome.runtime.id;

  2. Использование API i18n: var myid = chrome.i18n.getMessage("@@extension_id");

но он не нужен для открытия страниц, поскольку chrome.tabs.create() (и некоторые другие) понимают относительные пути.

Таким образом, чтобы открыть index.html из папки расширения, вам нужно просто использовать:

chrome.tabs.create({url: "index.html"});
9 голосов
/ 16 июня 2011

Если вы делаете что-то с локализацией, похоже, что механика расширения предлагает несколько заполнителей для доступа к вашему идентификатору расширения:

Если вы просто пытаетесь получить доступ к URL для локальныхфайлы к вашему расширению, вы можете просто использовать chrome.extension.getURL("some file name");

Если у вас есть еще одна причина для фактического необходимости знать идентификатор расширения, я не уверен, что есть прямой способ получить его изнутрисамо расширение.Два способа, которые приходят ко мне в голову - использовать chrome.extension.getURL("some file name"), а затем анализировать идентификатор расширения из этого возвращенного URL - или использовать chrome.management.getAll() и просматривать все установленные расширения до тех пор, пока вынайдите свой, используя совпадение на name, а затем получите доступ к id:

5 голосов
/ 26 июля 2018

В WebExtensions у вас есть два варианта:

  1. chrome.runtime.id
  2. chrome.i18n.getMessage("@@extension_id")

В Chrome и Opera они вернутто же значение, но в Firefox есть разница.

В Firefox, chrome.runtime.id вернет так называемый "ID расширения", но chrome.i18n.getMessage("@@extension_id") вернет "Внутренний UUID".Идентификатор расширения одинаков для всех пользователей, но внутренний UUID создается при установке расширения и является уникальным для каждого пользователя.

В зависимости от контекста идентификатор расширения будет не тем, что вам нужно.Например, Firefox использует внутренний UUID для заполнения заголовка origin, а не ID расширения.

Пример 1: Ghostery в Firefox 61

chrome.runtime.id                        --> "firefox@ghostery.com"
chrome.i18n.getMessage("@@extension_id") --> "e3225586-81a0-47c3-8612-d95fb0c2a609"

Дляfetch запросов из расширения, Firefox добавит заголовок

origin: moz-extension://e3225586-81a0-47c3-8612-d95fb0c2a609

Пример 2: Ghostery in Chrome

chrome.runtime.id                        --> "mlomiejdfkolichcflejclcbmpeaniij"
chrome.i18n.getMessage("@@extension_id") --> "mlomiejdfkolichcflejclcbmpeaniij" 

Для fetch запросов отв расширение Chrome добавит заголовок

origin: chrome-extension://mlomiejdfkolichcflejclcbmpeaniij
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...