2014-09-24 31 views
0

我有一個程序,用戶做一些操作(即點擊幾個按鈕)。我想記錄他們的點擊和他們點擊的按鈕,以允許用戶在點擊單獨的「下載」按鈕時下載帶有點擊記錄的文本文件。我查看了HTML 5的文件系統API,但他們似乎沒有跨瀏覽器支持。理想情況下,我希望整個文件生成和下載方案完全在客戶端,但我也願意接受服務器端的想法。編寫和下載文件客戶端crossbrowser

TL; DR:基本上我在尋找一個相當於Java的FileWriter,FileReader,ObjectOutputStream和ObjectInputStream的Vanilla JS或jQuery(希望遠離PHP,但我會用它作爲最後一個選項)。

另外,爲什麼不是所有的瀏覽器都支持文件系統api? (我猜測這會讓MSWord和Pages與所有可能出來的開源客戶端文本編輯器失去聯繫)。

+0

錄製點擊需要寫入文件或數據庫。我會選擇後者。使用數據庫不會依賴於跨瀏覽器依賴性。 – 2014-09-24 18:40:28

+0

我真的想用寫入文件的方法。我沒有訪問數據庫,因爲我的網絡服務器的範圍有限,我希望主要通過客戶端運行此網頁 – user939687 2014-09-26 02:24:15

+0

另外,如果我的用戶主要使用chrome或chrome操作系統,是否有辦法專門爲他們的瀏覽器做這個客戶端?我總是可以從基於瀏覽器的常見頁面重定向到不同版本的頁面 – user939687 2014-09-26 02:25:33

回答

0

不幸的是,HTML5文件系統是no longer a part of the spec,長話短說,FF拒絕因爲他們聲稱你可以在File-System API中做的所有事情都可以在HTML5 Indexeddb中實現(大部分情況都是如此)。請參閱this blog post瞭解FF爲什麼沒有實現。我不知道IE的故事。 (我可能已經過時了,爲什麼FireFox沒有實現,我仍然因爲實際上無法完成indexeddb中的所有操作而感到沮喪,您可以在noew「Chrome文件系統API」中執行此操作)

通常,如果兩個三瀏覽器實現了一個規範,它保持在規範中。否則,該規範會成爲孤兒。但是,我相當肯定文件系統api沒有起作用的一個很大的原因是因爲IndexedDB API(caniuse IndexedDB)在兩個規範引入時都真正起飛了。如果您想跨瀏覽器支持,請檢查此api。

這一切都表示,如果你仍然在文件系統api上設置一些開發人員寫了一個nice wrapper around the IndexedDB,文件系統API實際上不會實際上爲您提供一個流。給定一個fileWriter對象,您將不得不將事件附加到給定的文件。然後您必須讀取整個文件並通過ajax請求發送到服務器,然後在成功上傳後從服務器下載。

更好的途徑是使用索引資料apiwhich上developer.mozilla

  1. 打開數據庫陳述。
  2. 在升級數據庫中創建一個對象存儲。
  3. 啓動一個事務並請求執行一些數據庫操作,例如添加或檢索數據。
  4. 通過監聽正確的DOM事件來等待操作完成。
  5. 做些什麼 與結果(可以在請求對象中找到)。

以下是關於IndexedDB的一些教程。

作爲賦予該文件的用戶,如簡單地提到之前,你必須將文件上傳到服務器並下載於「下載」的請求。不幸的是,你不得不欺騙用戶給他們機器上已有的數據。無論如何,希望這一切都有所幫助。