2011-10-11 7 views
7

私は過去(初級)のMozillaアドオン開発に取り組んできました。しかし、XPCOMに遭遇したとき、私は本当に怖がって、真ん中に残しました。MozillaアドオンSDKのXPCOMコンポーネントを使用する

最近、私はアドオンSDKを見つけただけで、本当にすごく気に入っていました。これまで数か月かかっていた作業は、SDKで2日を超えていないことが分かりました。もう一度私はXPCOMモジュールに打たれました。

私は本当にXPCOMの力を利用したいと思っていますが、締め切りに取り組んでおり、SDKのコンテキストでXPCOMをよく知っておくには一週間以上かかります。誰かが私が望む機能のソースコードで私を助けることができるのであれば、私は、各ユーザーセッションのために

  1. ...と思いまして、私は何かをログに記録します。私はセッションを区別することができます。私が今したいのは、ユーザーのマシンにファイルを作成し、アドオンから開いて何かを書き込むコードです。

  2. ブックマークとダウンロードにアクセスして読むためのコード。

SDKから戻ってくる必要がある場合は、本当に心が壊れるでしょう。だから親切に助けてください。

(私は本当にそれでバウンティを置くのに十分な敬意を持っていないが、私は真剣に助けをいただければ幸いです。)

+0

あなたは_hello world_の仕事を得るために管理しましたか?私といくつかの参考文献を共有してもよろしいですか?私がいつも得意なのは 'Cc ['私の契約ID']は未定義です。あなたは親切に[ここ](http://stackoverflow.com/questions/8477794/firefox-xpcom-hello-world-typeerror-cc-is-undefined)に答えると、あなたは何人かの代理人を得るかもしれません。 –

答えて

7

chrome packageはあなたに完全なXPCOMのアクセスを提供します。ファイルアクセスのために、それはFileUtils moduleを使用するのが最善です:

var {Cc, Ci, Cu} = require("chrome"); 
var {FileUtils} = Cu.import("resource://gre/modules/FileUtils.jsm"); 
var file = FileUtils.getFile("ProfD", ["mylogfile.txt"]); 
var stream = FileUtils.openFileOutputStream(...); 
stream.write(data, data.length); 
stream.close(); 

モジュールをインポートするには、やや珍しい構文はbug 683217によるものです。 FileUtils.openFileOutputStream()はFirefox 7以降でのみ利用可能であり、FileUtils.openSafeFileOutputStream()はファイルに追加したい場合は使用できません。

あなたが始まる、通常の code snippetsを使用してブックマークにアクセスするために

var bmsvc = Cc["@mozilla.org/browser/nav-bookmarks-service;1"] 
       .getService(Ci.nsINavBookmarksService); 
+0

あなたのコードの実行時にこの例外が発生します。 ** TypeError:FileUtils.getFileは関数ではありません** アドオンのディレクトリ構造に他の要素が必要ですか? ** file **変数が** openFileOutputStream **関数に渡されてコードを貼り付けただけです。 – Shatu

+0

@シャツ:申し訳ありませんが、私の悪い - それをテストせずにコードを投稿する。 'Cu.import()'は 'FileUtils'オブジェクトを返すのではなく、' FileUtils'をプロパティとして持つオブジェクトを返します。答えの中で私のコードを修正し、 'FileUtils.getFile()'のパラメータも修正しました。 –

関連する問題