引言
我使用RapidWeaver - Mac OS应用程序,它不使用服务器环境。它有一个编辑器和预览模式。预览模式是一个基于Webkit的渲染器,我可以使用“检查元素”,就像您在Safari中通常所做的那样。
我希望使用localStorage或SQLite来存储工具栏的一些设置。我已经阅读了一些关于indexedDB的信息,尽管我没有发现关于如何使用它的具体实现。
localStorage存在的问题
当我保持预览模式时,当我在编辑器和预览模式之间切换时,localStorage工作得很好,url - location.href - is略有改变:
file:///private/var/folders/s7/x8y2s0sd27z6kdt2jjdw7c_c0000gn/T/TemporaryItems/RapidWeaver/98970/document-143873968-28/RWDocumentPagePreview/code/styled/index.html
file:///private/var/folders/s7/x8y2s0sd27z6kdt2jjdw7c_c0000gn/T/TemporaryItems/RapidWeaver/98970/document-143873968-29/RWDocumentPagePreview/code/styled/index.htmldocument-143873968-28转变为document-143873968-29
我所读到的关于localStorage的东西,基本上是globalStoragelocation.hostname for FireFox。据我所知,globalStorage在Safari中不受支持,所以我无法尝试。
SQLite存在的问题
当我试图打开一个数据库时:
var shortName = 'mydatabase';
var version = '1.0';
var displayName = 'My Important Database';
var maxSize = 65536; // in bytes
var db = openDatabase(shortName, version, displayName, maxSize);我把这个放在我的控制台里:
SECURITY_ERR: DOM Exception 18: An attempt was made to break through the security policy of the user agent.这基本上结束了我的问题,我将衷心感谢任何答复或评论。
发布于 2012-01-23 16:29:42
使用以下解决方案:Implementing a WebView database quota delegate,只要做一些修改,我就能让它正常工作。
下面的委托方法适用于我(在您的webViewDelegate中):
- (void)webView:(WebView *)sender frame:(WebFrame *)frame exceededDatabaseQuotaForSecurityOrigin:(id) origin database:(NSString *)databaseIdentifier
{
static const unsigned long long defaultQuota = 5 * 1024 * 1024;
if ([origin respondsToSelector: @selector(setQuota:)]) {
[origin performSelector:@selector(setQuota:) withObject:[NSNumber numberWithLongLong: defaultQuota]];
} else {
NSLog(@"could not increase quota for %@", defaultQuota);
}
}默认情况下,数据库被赋予0字节,这将导致上面出现的模糊错误消息。当没有足够的空间时,在尝试创建数据库之后调用上述方法。请注意,此方法是在WebUIDrelatePrivate.h( http://opensource.apple.com/source/WebKit/WebKit-7533.16/mac/WebView/WebUIDelegatePrivate.h )中定义的,使用它可能会阻止您将应用程序提交到mac应用程序存储区。
发布于 2011-09-24 18:38:31
localStorage是一种html5机制,它比cookies给脚本更多的空间。Safari支持它:https://developer.apple.com/library/archive/documentation/iPhone/Conceptual/SafariJSDatabaseGuide/Name-ValueStorage/Name-ValueStorage.html
我不知道它对基于file:///的应用程序应该有什么路径限制,如果有的话。
编辑:进一步查看路径限制,我发现您得到的内容应该与Safari一起工作,FF最近修复了一个bug,使它无法在那里工作:https://bugzilla.mozilla.org/show%5Fbug.cgi?id=507361。
https://stackoverflow.com/questions/7540904
复制相似问题