可能であればデコードした後、XPCOM を介して Web ページ上のすべての画像を取得するにはどうすればよいですか?
画像は、一部の CSS プロパティ、img タグ内、または Web 開発者が含めた任意のフォームで背景 URL として HTML で指定される場合があります。
imgIContainer、imgIDecodeObserver、および他の多くのインターフェースを調べてみました。画像の URI を Mozilla に提供して、画像をロードし、デコードして imgIContainer を返す方法はありますが。しかし、現在の Web ページですべての画像を取得する方法が見つかりませんでした。
これは、Java または Javascript で行う必要があります。
助言がありますか?
@Wladimir - ご協力ありがとうございます。
CSS コンストラクト (背景画像) を含むすべての画像が必要です。これで、nsIWebProgressListener からのイベントをリッスンしています。
onStateChange: function(webProgress, request, stateFlags, status) {
if ((~stateFlags & (nsIWebProgressListener.STATE_IS_REQUEST | nsIWebProgressListener.STATE_STOP)) == 0) {
var imgReq = request.QueryInterface(CI.imgIRequest);
if (imgReq)
var img = imgReq.image;
}
}
問題は、request.QueryInterface(CI.imgIRequest)
すべての非画像リクエストに対して例外をスローすることです。これらの例外は、コードを try-catch ブロック内に配置することで無視できますが、私は物事をきれいに行うことを好みます。
リクエストが画像かどうかを確認できる条件はありますか?