localStorage UIWebView iPhone / iPad 保存或读取不起作用.. 有时?
Posted
技术标签:
【中文标题】localStorage UIWebView iPhone / iPad 保存或读取不起作用.. 有时?【英文标题】:localStorage UIWebView iPhone / iPad saving or reading not working.. sometimes? 【发布时间】:2011-06-30 14:16:00 【问题描述】:我有 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 代码引起的,因为我确实复制了项目来创建第二个应用程序。
提前致谢,如果您需要更多信息,请随时询问。我无法在 Google 或此处找到任何解决方案。似乎缺少有关 localStorage 键/值的信息。这是有道理的,因为它很容易使用,但仍然如此。其他人有这个问题吗?
【问题讨论】:
【参考方案1】:试试这个:
localStorage.removeItem('keyName');
localStorage.setItem('keyName','keyValue');
我相信您总是必须在设置之前删除。
【讨论】:
【参考方案2】:我找到了某种答案。我想知道其他一些 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)上收到“安全错误:DOM 异常 18”。一旦我移动到其他页面,这不会发生。我发现一个糟糕的解决方法是当一个人到达索引页面时重新加载。
我确定有办法从 Obj C 端禁用此安全功能?
谢谢。
【讨论】:
以上是关于localStorage UIWebView iPhone / iPad 保存或读取不起作用.. 有时?的主要内容,如果未能解决你的问题,请参考以下文章
localStorage.getItem('item') 是不是优于 localStorage.item 或 localStorage['item']?