XUL/Firefox の場合、次のように取得できる nsIIOService インターフェースが必要です。
var mIOS = Components.classes["@mozilla.org/network/io-service;1"].
getService(Components.interfaces.nsIIOService);
次に、チャネルを作成し、非同期リンクを開く必要があります。
var channel = mIOS.newChannel(urlToOpen, 0, null);
channel.asyncOpen(new StreamListener(), channel);
ここで重要なのはStreamListener
オブジェクトです。
var StreamListener = function() {
return {
QueryInterface: function(aIID) {
if (aIID.equals(Components.interfaces.nsIStreamListener) ||
aIID.equals(Components.interfaces.nsISupportsWeakReference) ||
aIID.equals(Components.interfaces.nsISupports))
return this;
throw Components.results.NS_NOINTERFACE;
onStartRequest: function(aRequest, aContext)
{ return 0; },
onStopRequest: function(aRequest, aChannel /* aContext */, aStatusCode)
{ return 9; },
onDataAvailable: function(aRequest, aContext, aStream, aOffset, aCount)
{ return 0; }
};
}
onStartRequest
、onStopRequest
、関数の詳細を入力するonDataAvailable
必要がありますが、それで十分です。このインターフェイスを Firefox 拡張機能でどのように使用したかをご覧ください (これは IdentFavIcon と呼ばれ、mozilla アドオン サイトにあります)。
私が確信していない部分は、このページ要求を時々トリガーする方法ですが、 set_timeout()
おそらくうまくいくはずです.
編集:
- ダウンロードしたデータを単一の変数に収集する方法の例については、こちらの例を参照してください (画像のダウンロードのセクションを参照)。と
- HTML ソースを DOM ツリーに変換する方法については、このページを参照してください。
HTH。