Чтобы определить, установлено ли расширение в Chrome, вы можете проверить наличие известного ресурса, включенного в расширение, такого как изображение.Ссылки на ресурсы для расширения используются по следующему шаблону URL:
chrome-extension://<extensionID>/<pathToFile>
Основная методика обнаружения заключается в создании скрытого тега изображения и присоединении к нему событий load и error для проверки загрузки изображения (как описано * 1004).* здесь для Firefox):
extensionImg.setAttribute("src", "chrome-extension://<INSERT EXTENSION ID HERE>/images/someImage.png"); // See below for discussion of how to find this
/*
* Add event listeners for both "load"- and "error"-event
* Set the variable showing the existence of the extension by
* setting it to "true" or "false" according to the fired event
*/
extensionImg.addEventListener("load", function(e) {
extensionExists = true;
removeImgTag(e);
}, false);
extensionImg.addEventListener("error", function(e) {
extensionExists = false;
removeImgTag(e);
}, false);
function removeImgTag(e) {
e.currentTarget.parentNode.removeChild(e.currentTarget);
}
Проверьте каталог установки расширения в конфигурации Chrome, чтобы найти вероятную цель для обнаружения.На моей рабочей станции Linux расширения расположены по адресу:
~/.config/chromium/Default/Extensions
Вы можете видеть, что у меня установлено 3 расширения прямо сейчас:
~/.config/chromium/Default/Extensions$ ls
cpecbmjeidppdiampimghndkikcmoadk nmpeeekfhbmikbdhlpjbfmnpgcbeggic
cpngackimfmofbokmjmljamhdncknpmg
Странные имена - это уникальные идентификаторы, присвоенныерасширение при загрузке в интернет-магазин Chrome.Вы можете получить идентификатор либо из интернет-магазина, либо перейдя на вкладку Расширения (гаечный ключ -> Расширения) и наведя указатель мыши на ссылку на соответствующее расширение или в этом случае на «Снимок экрана (Google)» (обратите внимание на расширение, отмеченное звездочкой)ID):
https://chrome.google.com/webstore/detail/**cpngackimfmofbokmjmljamhdncknpmg**
В каталоге расширений будет одна или несколько версий;Вы можете игнорировать это.Внутри каталога версии находится фактическое содержимое расширения:
~/.config/chromium/Default/Extensions/cpngackimfmofbokmjmljamhdncknpmg/5.0.3_0$ ls
account.js images page.js sina_microblog.js
ajax.js isLoad.js picasa.js site.js
background.html _locales plugin style.css
editor.js manifest.json popup.html ui.js
facebook.js notification.html sha1.js upload_ui.js
hotkey_storage.js oauth.js shortcut.js
hub.html options.html showimage.css
i18n_styles page_context.js showimage.html
В случае расширения Screen Capture существует ряд изображений, которые можно использовать:
~/.config/chromium/Default/Extensions/cpngackimfmofbokmjmljamhdncknpmg/5.0.3_0/images$ ls
arrow.png icon_128.png icon_save.png print.png
copy.png icon_16.png line.png region.png
cross.png icon_19.png loading.gif screen.png
custom.png icon_32.png loading_icon.gif sina_icon.png
delete_account_icon.png icon_48.png mark.png toolbar_bg.png
down_arrow.png icon_close.png picasa_icon.png upload.png
facebook_icon.png icon_copy.png popup_bg.jpg whole.png
Это может бытьссылка на этот URL:
chrome-extension://cpngackimfmofbokmjmljamhdncknpmg/images/arrow.png
Этот метод, очевидно, зависит от стабильности содержимого расширения.Я рекомендую использовать изображение, которое, вероятно, останется во всех версиях.
Как уже упоминалось выше, тот же метод может использоваться для обнаружения расширений Firefox.В этом случае URL-адрес содержимого выглядит следующим образом:
chrome://<EXTENSION NAME>/content/<PATH TO RESOURCE>
На моей рабочей станции Linux расширения Firefox находятся в:
~/.mozilla/firefox/<USER PROFILE ID>/extensions
Гдевыглядит примерно так: "h4aqaewq.default"
Вы можете видеть, что у меня установлено 2 расширения, одно из которых является установкой каталога, а другое - XPI (произносится "zippy").") file:
~/.mozilla/firefox/h4aqaewq.default/extensions$ ls
{3e9a3920-1b27-11da-8cd6-0800200c9a66} staged
firebug@software.joehewitt.com.xpi
В" промежуточном "каталоге Firefox хранит расширения, которые будут обновлены (я думаю).Каталог GUID с квадратными скобками является установкой расширения на основе каталога, а файл .xpi - Firebug.
Примечание : XPI исчезает (см. Ссылку выше).Это в основном zip-файл, который может быть открыт и проверен любым, кто понимает zip-файл.Я использовал Emacs.
Найти идентификатор расширения в Firefox немного сложнее.Перейдите в «Инструменты -> Надстройки», перейдите на вкладку «Расширения», нажмите ссылку «Дополнительно» рядом с описанием расширения, затем нажмите ссылку «Отзывы», чтобы перейти на сайт расширения Firefox и получить идентификатор из URL (обратите внимание на ID расширения, отмеченный звездочкой):
https://addons.mozilla.org/en-US/firefox/addon/**firebug**/reviews/?src=api
Вероятно, есть более простой способ сделать это;предложения приветствуются.
TODO: как найти вероятное изображение в расширении Firefox.
В качестве дополнительной заметки, в Chrome вы можете общаться только с расширением через общий DOMстраница: Связь с хост-страницей