2011-06-30 22 views
0

私が使用して2 HTML5アプリケーションを持っている:localStorage UIWebView iPhone/iPadの保存または読み込みが動作しない場合がありますか?

localStorage[key] = value; 

データを保存するために(私は同じ問題を持つlocalStorage.keyName = "のBla" のような他のlocalStorageの方法を試してみました)。ファイルはのUIWebViewに表示するために、このコードでrefernceファイル(青フォルダ)として追加されます。

NSString *htmlPath = [[NSBundle mainBundle] pathForResource:@"index" 
                ofType:@"html" 
               inDirectory:@"/some_path" ]; 

NSString *html = [NSString stringWithContentsOfFile:htmlPath 
              encoding:NSUTF8StringEncoding 
               error:nil]; 

[webView loadHTMLString:html 
       baseURL:[NSURL fileURLWithPath: 
         [NSString stringWithFormat:@"%@/some_path/", 
          [[NSBundle mainBundle] bundlePath]]]]; 
webView.scalesPageToFit = YES; 

奇妙なことは、localStorageを(ジャバスクリプト)である1つのアプリ上で動作し、それが他にありません。それが動作しない場所では、try/catchコードでエラーを取得し、DOM 18 Security_Errを取得しました。ファイルがローカルなのでアクセスできないように思えます。これが両方のAppsの場合に当てはまるのは意味があります。

両方のコードがほぼ同じなので、何が違うのか分かりません。 UIWebViewの特別な機能を追加して、あらゆる種類の特別なセキュリティ制限を無効にしました。

私は本当に何が起きているのか分かりません。異なるのは、HTML/JS/CSSの側面だけです。 2番目のアプリケーションを作成するためにプロジェクトを文字通りコピーしたので、この問題がCocoa Touchコードによって引き起こされているとは思わない。

ありがとうございました。さらに詳しい情報が必要な場合は、お気軽にお問い合わせください。私はGoogleやここで解決策を見つけることができませんでした。 localStorageのキー/値に関する情報が不足しているようです。使い方は簡単ですが、それでも意味があります。この問題を抱えている人は誰ですか?

答えて

0

私は何らかの答えを見つけました。私は、他のココアタッチデベロッパがこれについていくつか光を当てることができるのだろうかと思います。私は、HTMLをロードするために使用したコードはこれです:

-(void)setUpWebview 
{ 
    NSString *htmlPath = [[NSBundle mainBundle] pathForResource:@"index" 
                 ofType:@"html" 
                inDirectory:@"/proj_folder" ]; 

    NSString *html = [NSString stringWithContentsOfFile:htmlPath 
               encoding:NSUTF8StringEncoding 
                error:nil]; 

    [webView loadHTMLString:html 
        baseURL:[NSURL fileURLWithPath: 
          [NSString stringWithFormat:@"%@/proj_folder/", 
           [[NSBundle mainBundle] bundlePath]]]]; 

    // disable scrolling on webview 
    [[[webView subviews] lastObject] setScrollEnabled:NO]; 

} 

私は、 "セキュリティERR:DOM例外18" を取得するだけで、最初のページのI・ロード(index.htmlの)に。他のページに移動すると、これは起こりません。私が見つけたひどい回避策は、インデックスページがあるときにインデックスページをリロードすることです。

このセキュリティ機能をObj C側から無効にする方法はありますか?

ありがとうございました。

1

これを試してみてください:

localStorage.removeItem('keyName'); 
localStorage.setItem('keyName','keyValue'); 

私はあなたが常にあなたが設定する前に削除するために持っていると信じています。

関連する問題