Как получить аддон установленного местоположения в FF? - PullRequest
0 голосов
/ 04 октября 2011

Я новичок в разработке расширений FF. Я скачал javaDemo.xpi и попытался вызвать Java из JavaScript. Но я остановился на

Components.classes['@mozilla.org/extensions/manager;1'].getService(Components.interfaces.nsIExtensionManager); is undefined

Я использую FF 7.0.1. Я пробовал AddonManager API. Но я не смог найти способ определения местоположения аддона и устал работать с функцией асинхронного обратного вызова.

Warning: WARN addons.manager: Exception calling callback: ReferenceError: alert is not defined
Source File: resource://javademo/LiveConnectUtils.js
Line: 65

1 Ответ

1 голос
/ 04 октября 2011

nsIExtensionManager API доступен только до Firefox 3.x, начиная с Firefox 4 вам необходимо использовать AddonManager API . Как то так:

Components.utils.import("resource://gre/modules/AddonManager.jsm");
AddonManager.getAddonByID("me@mydomain.com", function(addon)
{
  var manifestURI = addon.getResourceURI("install.rdf");
  alert("Add-on's install.rdf is located at: " + manifestURI.spec);
});

Обратите внимание, что manifestURI.spec обычно не file:// URL, а скорее jar: URL - большинство расширений не распаковываются при установке, поэтому все файлы расширений находятся внутри файла JAR (a.k.a. ZIP). Вы можете использовать XMLHttpRequest или NetUtil.asyncFetch() для чтения этих файлов независимо от того, на что указывает этот URL.

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