我有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键/值的信息似乎缺乏。这很有意义,因为它很容易使用但仍然如此。其他人有这个问题吗?
答案 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端禁用这个安全功能吗?
感谢。