いつもお世話になっております。
###実現したいこと
Mozilla系の拡張機能(アドオン)を開発しています。拡張機能のあるディレクトリのサブディレクトリ内にある画像ファイル名を列挙または検索したいのです。
###質問
chromeURLでディレクトリパスを示すことは可能でしょうか?何か他のスキーマ(ただし、file://などのOS依存のものはNG)などで、ディレクトリを扱えるものはあるでしょうか?chrome://.../ で示すと、ファイル名を指定しなくても、Xulによって推測されたファイルが示されてしまいます。
###具体的なこと
chrome.manifest に
content common chrome/content/common/
と登録していた上で、
javascript
1let url = "chrome://common/content/"; 2let crs = Components.classes['@mozilla.org/chrome/chrome-registry;1'].getService(Components.interfaces.nsIChromeRegistry); 3let ios = Components.classes['@mozilla.org/network/io-service;1'].getService(Components.interfaces.nsIIOService); 4let nsIURI = ios.newURI(decodeURI(url), null, null); 5let path = crs.convertChromeURL(nsIURI).path; // <- すみません、修正しました...(以前は let path = nsIURI.path)
と記述すると、path には(Windows7で実行させた場合。 --- は何かしらのフォルダ名)
file:///C:/Users/---/AppData/Roaming/---/Profiles/---/extensions/---/chrome/content/common/common.xul
がセットされます。
file:///C:/Users/---/AppData/Roaming/---/Profiles/---/extensions/---/chrome/content/common/
を指定させるには、どのような指定方法を行うと実現できるでしょうか?
Xulのチュートリアル によれば、chromeURLでは「そのディレクトリの用途に応じて適切なファイルが自動的に選択されることになります。 具体的には、コンテントであれば、パッケージ名に .xul を拡張子として加えたファイルが選択されます。」と書かれています。なので、仕様どおりではあります。しかし、ディレクトリそのものを示したい場合の方法がわかりません。
同じく File I/O から「あなたの拡張のフォルダーを取得する」の下にあるコードをもとに拡張機能のインストールされているフォルダを探すように実行させてみましたが、そもそも
javascipt
1Components.classes["@mozilla.org/extensions/manager;1"]
の箇所で
Type Error: Components.classes["@mozilla.org/extensions/manager;1"] is undefined
とエラーになってしまいます。
もしかして、これらのチュートリアルは情報が古いままなのでしょうか...
ご存知の方、(またはヒントなど)よろしくお願いいたします。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。