Firefox附加组件不会将自己的文件作为新的xul窗口打开。

时间:2013-06-19 04:41:01

标签: javascript firefox-addon xul

我的加载项会创建一个FireFox文件菜单命令,该命令会触发回调函数'launchApp'。

function launchApp() {
   var ww = Cc["@mozilla.org/embedcomp/window-watcher;1"]
                   .getService(Components.interfaces.nsIWindowWatcher);
   var appUrl='chrome://mrT2/mrT00.xul';            // production  (fails)
   var appUrl='file:///C:/mpa/@@mrT-2.0/mrT00.xul'; // testing     (works)
   var win = ww.openWindow(null, appUrl, "mrT2-window", "chrome,resizable", null);
   // Summary of  results of ww.openWindow() for various appUrl values:
   // 'chrome:///mrT2/mrT00.xul' 'No chrome package registered for ...' (true)
   // 'chrome://mrT00.xul'        'Invalid chrome URI: /'           (true)
   // 'chrome:///mrT00.xul'  and 'chrome://mrT2/mrT00.xul' seem valid yet both give:
   //Error: NS_ERROR_ILLEGAL_VALUE: Component returned failure code: 0x80070057 ...
   // ...  (NS_ERROR_ILLEGAL_VALUE) [nsIWindowWatcher.openWindow]       (unexplained)
return true;

以上代码运行良好,非常适合测试mrT00.xul(因为它直接从我编辑它的位置收集文件)。

然而,当我交换两个appUrl变量来尝试打开与通过xpi发送的完全相同的文件(现在内部到firefox)时,我得到了可怕的'非法值'0x80070057。

经过2天的研究和研究,我不能错过我的代码。你能吗?

否则,我怎样才能开始跟踪nsiWindowWatcher以查明错误?

1 个答案:

答案 0 :(得分:0)

当.xpi根目录中的chrome.manifest文件不按顺序时,当扩展程序尝试在/ content目录之外或其中打开xul文件时,可能会发生错误。 Firefox处理这两种情况并非无可指责,两种情况都没有提供警告。