HTML5、CSS 3、Javascript を使用してモバイル Web アプリケーションを作成しています。現在、Google Chrome と Safari の両方のデスクトップ ブラウザーでこれをテストしています。最終的には、このアプリケーションを iOS と Android デバイスの両方に公開する予定です。
テスト中、データベース操作は期待どおりに機能しています (これは素晴らしいことです)。ただし、Web ページを更新するたびに、最初に作成されたデータベースが複製され (ページを何度も更新した後、データベースの数がばかげた数に増えます)、できません。なぜこれが起こっているのかを理解してください。
私は、ブラウザがデータベースが存在するかどうかをチェックする (存在しない場合は作成する) か、データベースを開く (存在するデータベースのチェックが肯定的である場合) と考えました。データベースの作成には、次のコードが使用されます。
var Database = function(){
this.db = false;
this.dbName = 'Stores';
this.dbVersion = '1.0';
this.display = 'Stores';
this.dbSize = 5000000;
this.resultSet = [];
}
Database.prototype = {
initialiseDatabase : function(){
this.db = openDatabase(this.dbName, this.dbVersion, this.display, this.dbSize);
return this;
}
}
このクラス メソッド (厳密には JS のクラスではありませんが、用語の都合上受け入れられています) は、次のコードを使用してフロントエンド ビューで 1 回だけ呼び出されます。
デシベル。initialiseDatabase();
前に述べたように、コードは、Google Chrome と Safari の両方でページが更新された場合を除き、正常に動作します。これが発生すると、既存のデータベースがページの更新ごとに複製されます。
私が間違っている可能性があること、またはこれを防ぐためにできることについて、誰かが提案/指針を提供できますか? 私はこの投稿を見ました: webapp での SQLite データベースの複製ですが、Mac OS X 10.7 の上記の両方のブラウザーでこれが起こっていることがわかりました。
私に頭を上げてくれる人に前もって感謝します:)