6

アプリケーションのアドオンを作成しています。クライアントは、いくつかのWebページを表示し、そこからいくつかのファイルをダウンロードするためにお金を払っています。彼らは、アドオンによってこのダウンロードプロセスを自動化したいと考えています。そのため、[名前を付けてページを保存]を選択してダウンロードの完了を待つ代わりに、アドオンをクリックしてプロセスを忘れることができます。問題は、WebページがブラウザにCookieを提供していることです。したがって、最良の方法は[ファイル]->[名前を付けてページを保存]です。アドオンでやりたいです。このためのfirefox-javascriptの方法はありますか?nsiDownloaderを使用しました。ただし、保存されるのはhtmlのみで、写真などは保存されません。誰かがこの問題で私を導くことができますか?

編集: こんにちは、これはsaiprasadのおかげでトリックを行ったコードです

var dir =Components.classes["@mozilla.org/file/local;1"]  
       .createInstance(Components.interfaces.nsILocalFile); 
dir.initWithPath("C:\\filename");
var file = Components.classes["@mozilla.org/file/local;1"]  
       .createInstance(Components.interfaces.nsILocalFile);  
file.initWithPath("C:\\filename.html");  
var wbp = Components.classes['@mozilla.org/embedding/browser/nsWebBrowserPersist;1']  
          .createInstance(Components.interfaces.nsIWebBrowserPersist);  
alert("going to save");
wbp.saveDocument(content.document, file,dir, null, null, null);  
alert("saved");

編集: しかし、それでも一部のWebページは「名前を付けてページを保存」として正確に保存されません。これらの保存されたページは、元のページのようにレンダリングされるのではなく、いくつかのhtmlの例のように見えます。

4

1 に答える 1

5

[ファイル]->[名前を付けてページを保存]が期待どおりに機能しているとおっしゃっていたので、ソースコード(chrome://browser/content/browser.xul)を調べてみました。

https://developer.mozilla.org/en/nsIWebBrowserPersist#saveDocument()

この関数は、Webページが完全にロードされた後(DOMContentLoadedではない)にのみ呼び出すようにしてください。

于 2012-06-30T13:53:28.393 に答える