localStorage UIWebView iPhone / iPad保存或阅读不工作..有时?

时间:2011-06-30 14:16:00

标签: javascript iphone ios html5

我有2个HTML5应用程序使用:

 localStorage[key] = value;

保存数据(我尝试了其他localStorage方法,如localStorage.keyName =“Bla”,但问题相同)。这些文件被添加为引用文件(蓝色文件夹),此代码显示在UIWebView:

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(javascript)在一个应用程序上运行而在另一个应用程序上不起作用。在它不起作用的那个我尝试了一个try / catch代码来获取错误,我得到一个DOM 18 Security_Err。听起来它不允许我访问它,因为文件是本地的。如果两个应用程序都是这种情况,那将是有意义的。

我不知道有什么不同,因为它们中的代码几乎相同。我没有为UIWebView添加任何特殊功能来禁用任何类型的特殊安全限制。

我真的不知道发生了什么事。唯一不同的是HTML / JS / CSS方面。我不认为这个问题是由Cocoa Touch代码引起的,因为我真的复制了项目以创建第二个App。

提前致谢,如果您需要更多信息,请随时提出。我无法在Google或此处找到任何解决方案。关于localStorage键/值的信息似乎缺乏。这很有意义,因为它很容易使用但仍然如此。其他人有这个问题吗?

2 个答案:

答案 0 :(得分:1)

试试这个:

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

我相信在你设定之前你总是要删除。

答案 1 :(得分:0)

我找到了某种答案。我想知道其他一些Cocoa Touch开发者是否可以对此有所了解。我用来加载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];

}

我在加载的第一页(index.html)上得到“SECURITY ERR:DOM异常18”。一旦我移动到其他页面,这不会发生。我发现一个糟糕的解决方法是在一个人登陆时重新加载索引页面。

我确定有一种方法可以从Obj C端禁用这个安全功能吗?

感谢。