【问题标题】:How to save a webpage locally including pictures,etc如何在本地保存网页,包括图片等
【发布时间】:2012-06-30 06:07:22
【问题描述】:

我正在为应用程序构建一个插件。客户付费查看一些网页并从中下载一些文件。他们想通过插件自动化这个下载过程。因此,与其选择“将页面另存为”并等待下载完成,他们可以单击加载项并忘记该过程。问题是,网页正在向浏览器提供一些 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 示例。

【问题讨论】:

  • 我并不是 100% 了解这一点,但看看 CURL

标签: javascript firefox firefox-addon webpage xpcom


【解决方案1】:

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

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

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

【讨论】:

  • 靶心。我仅使用此功能,但引用了其他页面而不是您提供的页面。但是,在你指出这一点之后,我检查了它的参数,这让我找到了解决方案。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-15
相关资源
最近更新 更多