我正在编写一个基于webkit的osx应用程序,其中包含一组javascript文件。 我像这样设置webView:
webview = [[WebView alloc] init];
[webview setPolicyDelegate:self];
[webview setFrameLoadDelegate:self];
[webview setUIDelegate:self];
[webview setResourceLoadDelegate:self];
WebPreferences* prefs = [webview preferences];
[prefs setUsesPageCache:YES];
[prefs _setLocalStorageDatabasePath:@"/tmp/test"]; // existed folder, writable
[prefs setAllowUniversalAccessFromFileURLs:YES]; // enable cross-domain xmlhttprequest
[prefs setAllowFileAccessFromFileURLs:YES];
[prefs setJavaScriptCanAccessClipboard:YES];
[prefs setDatabasesEnabled:YES]; // enable localDatabase
[prefs setLocalStorageEnabled:YES]; // enable localStorage
[prefs setDeveloperExtrasEnabled:YES];
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"html" inDirectory:@"data"];
NSURL *fileURL = [NSURL fileURLWithPath:filePath];
[webview.mainFrame loadRequest:[NSURLRequest requestWithURL:fileURL]];
这是data / test.html代码的一部分.witch函数被挂钩到NSLog消息。
function test(){
alert("startup");
if(window.localStorage){
alert("local storage works");
}else{
alert("local storage not supported");
}
localStorage.setItem('testItem', "hello world; local storage works!");
alert(localStorage.getItem('testItem'));
if(window.openDatabase){
alert("local database works");
window.openDatabase("mydb", "1.0", "my first database", 2 * 1024 * 1024);
}else{
alert("local database not supported");
}
return true;
}
这是日志:
启动
本地存储工作
你好世界;本地存储工作!本地数据库工作
CONSOLELOG:17 @ SECURITY_ERR:DOM例外18:试图突破用户代理的安全策略。 @ file:///path/of/my.app/Contents/Resources/data/test.html
我不知道为什么window.openDatabase可以工作但无法创建数据库。 谢谢。
答案 0 :(得分:0)
请在此处查看我的回答:https://stackoverflow.com/a/8975014/146099
我发布的解决方案为我工作。还有一些其他链接可能会对您有所帮助。