Ich verwende HTML5 FileWriter API, um den Status meiner Webapp zu speichern. Ich habe ein Bit von JS, das periodisch FileWriter.write
aufruft, um das zu tun (so, im Laufe der Zeit, die write
Methode wird mehrmals aufgerufen). Standardmäßig verwendet die FileWriter-API einen Append-Ansatz zum Schreiben von Dateien, der meinen Anforderungen nicht entspricht, da ich den Dateiinhalt nicht überschreiben möchte.überschreiben Sie eine Datei mit HTML5 FileWriter
Ich versuchte zunächst, dies:
this._writer.seek(0);
this._writer.write(content);
Dies funktioniert nicht, wenn Sie einen Text kürzer als der Dateiinhalt schreiben. Ich habe dann versucht diese:
this._writer.truncate(0);
this._writer.write(content);
Dieser Code soll die Datei löschen, und dann meine neue Inhalte schreiben, aber ich erhalte die folgende Fehlermeldung, wenn write
Methode aufgerufen wird:
Uncaught InvalidStateError: An operation that depends on state cached in an interface object was made but the state had changed since it was read from disk.
Odd Sache: Wenn ich den Code debuggen (mit einem Haltepunkt), tritt der Fehler nicht auf, als ob FileWriter.truncate
eine asynchrone Methode wäre ...
Ich stecke hier, irgendwelche Ideen?
Ich bin mit Chrome 30.0.1599.69
Können Sie das näher erläutern? Was ist "d"? – htulipe
@htulipe, es ist mein jQuery.Delfered-Objekt, das ich extern verwende, um benachrichtigt zu werden, wenn sowohl die Kürzung als auch das Schreiben erfolgt ist. Sie können es ignorieren oder anderen Code hinzufügen, den Sie ausführen möchten, wenn das Schreiben abgeschlossen ist. –
@htulipe Bitte markieren Sie dies als Antwort, wenn es das Problem löst. –