2012-06-30 94 views
3

我正在爲應用程序構建附加組件。客戶正在付費查看一些網頁並從中下載一些文件。他們希望通過附件自動執行下載過程。因此,不是選擇「將頁面另存爲」並等待下載完成,他們可以單擊附加組件並忘記該過程。問題是,該網頁正在向瀏覽器提供一些cookie。所以最好的方法是File->「Save Page As」。我想通過附加組件來完成。有沒有任何Firefox的JavaScript的方式呢?我使用了nsiDownloader。但它只保存html,而不是圖片等。任何人都可以在這個問題上指導我嗎?如何在本地保存包括圖片等的網頁

編輯: 嗨,這是沒有的伎倆代碼,這要歸功於賽·普拉薩德·

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

我並非真的100%在這個,但看看CURL – Sturm

回答

4

既然你提到文件 - >「頁面另存爲」工作正常,我試圖尋找通過源代碼(鉻://browser/content/browser.xul),並發現這一點:

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

請確保您只有在網頁完全加載(而不是DOMContentLoaded)後才能調用此函數!

+0

牛眼。我只使用這個函數,但是引用其他頁面而不是你給出的頁面。但是,在你指出這個之後,我檢查了它的參數,這些參數讓我找到了解決方案。謝謝。 – prabhakaran