0

ローカルデータベースを開くjavascriptを含むWebViewを含む単純なTitaniumモバイルアプリケーションを構築する場合、iOS 5.1デバイスに初めてインストールすると、データベースが正しく開きます。ただし、デバイスでアプリをアップグレードすると(それでもまったく同じバージョン/ビルドである可能性があります)、ローカルデータベースを開くときにエラーが発生します。

SECURITY_ERR:DOM例外18

再現する手順:

  1. 以下のapp.jsファイルとdatabase.htmlファイルをリソースのルートに追加します。
  2. iOS 5.1デバイスにアプリをインストールします(TiStudioで[実行]>[iOSデバイス])。
  3. アプリを開くと、「dbopened」と表示されます。
  4. iOS 5.1デバイスでアプリをアップグレードします(TiStudioで[実行]>[iOSデバイス])。
  5. アプリを開くと、「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

他の誰かがこの問題に遭遇しましたか?回避策のアイデアはありますか?

4

1 に答える 1

0

Titaniumが同じことをするまでにどれくらいの時間がかかるか誰が知っているので、私たちは自分たちで問題を修正するためにiOS用のカスタムwebviewモジュールを作成することになりました:

Webviewモジュールソース

于 2013-01-28T15:30:51.020 に答える