如何在FF中获取插件安装位置?

时间:2011-10-04 06:52:20

标签: java javascript firefox asynchronous firefox-addon

我是开发FF Extensions的新手。我已经下载了javaDemo.xpi并尝试从javascript调用java。但我停在了

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 个答案:

答案 0 :(得分:1)

nsIExtensionManager API仅适用于Firefox 3.x,从Firefox 4开始,您需要使用the 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://网址,而是jar:网址 - 大多数扩展程序在安装时都不会解压缩,因此所有扩展文件都在JAR内(即ZIP) )文件。无论该网址指向哪个文件,您都可以使用XMLHttpRequestNetUtil.asyncFetch()来阅读这些文件。