2012-09-11 29 views
0

因此,我使用HTML5 FileSystem API將大量數據寫入文件 - 我想在卸載HTML頁面時寫入此數據,即用戶導航時遠。在頁面卸載時寫入到HTML5 FileSystem API存儲

http://www.html5rocks.com/en/tutorials/file/filesystem/

它不工作,我很擔心,有可能是沒有辦法使其工作。即使你已經有一個文件系統的引用,你至少需要等待兩個回調函數:一個在你調用getFile後給你一個fileEntry,另一個在你調用createWriter之後給你一個fileWriter - 而不是提及成功/失敗回調。我認爲回調沒有被調用,因爲用戶正在導航。

有沒有辦法解決這個問題?我嘗試使用onbeforeunload和/或導航確認消息,只是爲了看看對話框引入的延遲是否會給它時間來寫,但這不起作用(可能是由於Javascript是單線程?)現在我想知道如果我可以在頁面上一直保留一個open fileWriter,並期望他們何時離開?任何幫助表示讚賞。

+0

你的文件系統的JavaScript代碼工作在其他事件像onload ..?,可能是你的文件系統處理代碼的一些錯誤,你可以顯示代碼。 – Sark

回答

0

我得到這個由

  1. 打開該文件,並在頁面加載得到一個作家的工作(所以,我做的這一切:請求限額,得到的文件系統,該FileEntry的,以及附加行號,並然後扶住FileWriter的同時,用戶在頁面

  2. 在「onbeforeunload」事件

  3. 返回由「onbeforeunload」的字符串寫入文件,從而沒有確認消息時,在您離開從頁面。這很煩人,但確認消息是必要的,以給它時間來完成寫入文件。如果你不這樣做,寫作永遠不會發生。

仍然打開更好的解決方案,很高興沒有確認消息。

1

在某些瀏覽器中,您可以在onunload/onbeforeunload中執行哪些操作(或可以執行的工作量)是有限制的。例如,在Chrome中完成onunload需要1秒的超時時間。您在onunload中排隊的任何異步任務不保證在退出後運行。

(當一個頁面被卸載,瀏覽器將釋放腳本執行上下文,因此一些網頁已不復存在不會跑之前沒有貼鏈接回調。)

我建議不妨緩存FileEntry的/ fileWriter就像你在做什麼,但沒有保證,特別是如果你正在寫大量的數據。