2012-08-29 36 views
0

我想找到一種方式,我們可以使用JS在Firefox中自動保存文件。我已經做了,直到尚未使用的FireShot在Windows桌面的方式:自動保存在Firefox中的文件

var element = content.document.createElement("FireShotDataElement"); 
element.setAttribute("Entire", EntirePage); 
element.setAttribute("Action", Action); 
element.setAttribute("Key", Key); 
element.setAttribute("BASE64Content", ""); 
element.setAttribute("Data", Data); 
element.setAttribute("Document", content.document); 
if (typeof(CapturedFrameId) != "undefined") 
    element.setAttribute("CapturedFrameId", CapturedFrameId); 
content.document.documentElement.appendChild(element); 
var evt = content.document.createEvent("Events"); 
evt.initEvent("capturePageEvt", true, false); 
element.dispatchEvent(evt); 

但問題是,它會打開一個對話框,確認本地驅動器位置的詳細信息。有沒有辦法我可以硬編碼本地驅動器存儲位置並自動保存文件?

+0

那麼,你創建一個Firefox插件?還是你問如何修改/配置FireShot?或者你想要一個FireShot替代品?請注意關於Stack Overflow的問題應該與編程有關 - 現在我沒有在你的問題中看到這種關係(不是問題本身非常清楚)。 –

+0

是的,我正在創建一個Fire Fox插件。以上是代碼,說明我目前如何實施不符合我想實現的要求。因此,我正在尋找一個可以自動保存網頁的JS腳本。 – Prakash

回答

1

如果要創建一個Firefox插件然後FileUtilsNetUtil.asyncCopy是你的朋友:

Components.utils.import("resource://gre/modules/FileUtils.jsm"); 
Components.utils.import("resource://gre/modules/NetUtil.jsm"); 

var TEST_DATA = "this is a test string"; 
var source = Components.classes["@mozilla.org/io/string-input-stream;1"]. 
       createInstance(Components.interfaces.nsIStringInputStream); 
source.setData(TEST_DATA, TEST_DATA.length); 

var file = new FileUtils.File("c:\\foo\\bar.txt"); 
var sink = file.openSafeFileOutputStream(file, FileUtils.MODE_WRONLY | 
               FileUtils.MODE_CREATE); 
NetUtil.asyncCopy(source, sink); 

這將異步寫入字符串this is a test string到文件c:\foo\bar.txt。請注意,NetUtil.asyncCopy會自動關閉這兩個流,您不需要這樣做。但是,您可能想要將一個函數作爲第三個參數傳遞給此方法 - 寫操作完成時將調用它。

參見:Code snippets, writing to a file

0

每臺計算機都有不同的文件結構。但是,仍然有一種方法。你可以將它保存到cookie/session,取決於你的數據如何「永久」。

不要考慮寫物理文件,因爲它需要額外的許可。

+0

我正在使用Windows桌面,只需要寫入本地驅動器 – Prakash