ローカルデータベースを開くjavascriptを含むWebViewを含む単純なTitaniumモバイルアプリケーションを構築する場合、iOS 5.1デバイスに初めてインストールすると、データベースが正しく開きます。ただし、デバイスでアプリをアップグレードすると(それでもまったく同じバージョン/ビルドである可能性があります)、ローカルデータベースを開くときにエラーが発生します。
SECURITY_ERR:DOM例外18
再現する手順:
- 以下のapp.jsファイルとdatabase.htmlファイルをリソースのルートに追加します。
- iOS 5.1デバイスにアプリをインストールします(TiStudioで[実行]>[iOSデバイス])。
- アプリを開くと、「dbopened」と表示されます。
- iOS 5.1デバイスでアプリをアップグレードします(TiStudioで[実行]>[iOSデバイス])。
- アプリを開くと、「dbopening failed:Error:SECURITY_ERR:DOMException18」と表示されます。
再現するコードは次のとおりです。
app.js:
var win = Ti.UI.createWindow({});
var webView = Ti.UI.createWebView({
top : 0, right : 0, bottom : 0, left : 0, url: 'database.html'
});
win.add(webView);
win.open();
database.html:
<!DOCTYPE HTML>
<html>
<head>
<title>db test</title>
<script>
window.onload = function () {
var dbConn;
try {
dbConn = openDatabase('test', '0.1', 'test database', 5 * 1024 * 1024);
alert('db opened');
} catch (e) {
alert('db opening failed: ' + e.toString());
}
};
</script>
</head>
<body>
db test
</body>
</html>
この問題は、ApacheCordovaが修正したものと同じようです。
https://issues.apache.org/jira/browse/CB-347
他の誰かがこの問題に遭遇しましたか?回避策のアイデアはありますか?