我正在为应用程序构建一个附加组件。客户付费查看一些网页并从中下载一些文件。他们希望通过附加组件自动执行此下载过程。因此,他们可以单击加载项并忘记该过程,而不是选择“将页面另存为”并等待下载完成。问题是,网页正在为浏览器提供一些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示例。
答案 0 :(得分:5)
由于您提到File->“Save Page As”按预期工作,我尝试查看源代码(chrome://browser/content/browser.xul)并找到了:
https://developer.mozilla.org/en/nsIWebBrowserPersist#saveDocument()
确保只有在网页完全加载后才能调用此函数(不是DOMContentLoaded)!!