デバイス カレンダーを使用する Phonegap/Cordova を使用して Android 用のアプリケーションを作成しています。デバイス カレンダーにイベントを追加するプラグイン (「Calify」) を作成しましたが、これは正常に動作します。ただし、プラグインが返すデバイス カレンダー イベント ID を Web-SQL データベースのレコードに追加しようとしていますが、これにより次のエラーが発生します (Android シミュレーターで実行)。
file:///android_asset/www/cordova-2.2.0.js: Line 1090 : processMessage failed: Message: S01 Calify507282772 s[{"id":191,"calid":615}]
file:///android_asset/www/cordova-2.2.0.js: Line 1091 : processMessage failed: Error: Error: INVALID_STATE_ERR: DOM Exception 11
私のコードは次のようになります。
window.addEvent(function(insertions){
data = JSON.parse(insertions);
console.log(insertions);
event_id = data[0]['calid'];
id = data[0]['id'];
tx.executeSql('UPDATE AFSPRAKEN SET eventID=? WHERE id=' + id, [event_id]);
}, [calendarID, [{start: start.getTime(), end: end.getTime(), title: event_title}]]);
「挿入」のログは、「event_id」と「id」を個別に記録するだけでなく、望ましい結果をもたらします。データベースの挿入と関係があるようです(これも非同期です)。この関数はデータベース トランザクション内で実行されることに注意してください。これは、このカレンダー イベント関数の外で他のクエリも実行しているため必要です。挿入クエリをコメント アウトすると、コードがエラーなしで実行されます。
DOM Exception 11 は、オブジェクト (「挿入」だと思いますか?) にアクセスできなくなったことを意味しているようです。おそらくそれと関係があります。