我是开发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
答案 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) )文件。无论该网址指向哪个文件,您都可以使用XMLHttpRequest
或NetUtil.asyncFetch()
来阅读这些文件。