6

我正在为应用程序构建一个附加组件。客户付费查看一些网页并从中下载一些文件。他们想通过插件自动化这个下载过程。因此,无需选择“将页面另存为”并等待下载完成,他们可以单击加载项并忘记该过程。问题是,网页正在向浏览器提供一些 cookie。所以最好的方法是 File-> "Save Page As" 。我想通过插件来做到这一点。有没有什么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 示例。

4

1 回答 1

5

由于您提到文件->“另存为”按预期工作,我尝试查看源代码(chrome://browser/content/browser.xul)并发现:

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

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

于 2012-06-30T13:53:28.393 回答