如何在本地保存网页,包括图片等

时间:2012-06-30 06:07:22

标签: javascript firefox firefox-addon webpage xpcom

我正在为应用程序构建一个附加组件。客户付费查看一些网页并从中下载一些文件。他们希望通过附加组件自动执行此下载过程。因此,他们可以单击加载项并忘记该过程,而不是选择“将页面另存为”并等待下载完成。问题是,网页正在为浏览器提供一些cookie。所以最好的方法是File-> “将页面另存为”。我想通过附加组件来做到这一点。有没有firefox-javascript方式呢?我用过nsiDownloader。但它只保存html,而不是图片等。在这个问题上有人可以指导我吗?

修改  嗨,这是诀窍,这要归功于sai prasad

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");

修改     但是,仍有一些网页不像“保存页面”那样保存。那些保存的页面不像原始页面那样呈现,它们看起来像一些html示例。

1 个答案:

答案 0 :(得分:5)

由于您提到File->“Save Page As”按预期工作,我尝试查看源代码(chrome://browser/content/browser.xul)并找到了:

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

确保只有在网页完全加载后才能调用此函数(不是DOMContentLoaded)!!