1

私のアドオンは、コールバック関数「launchApp」をトリガーする FireFox ファイル メニュー コマンドを作成します。

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 をテストするのに最適です (編集している場所からファイルを直接収集するため)。

ただし、2 つの appUrl 変数を交換して、xpi 経由で出荷されたものとまったく同じファイル (現在は firefox の内部) を開こうとすると、恐ろしい「不正な値」0x80070057 が表示されます。

2 日間の調査と研究の後、私は自分のコードを責めることはできません。あなたはできる?

それ以外の場合、エラーを特定するために nsiWindowWatcher のトレースを開始するにはどうすればよいですか?

4

1 に答える 1