3

如何实现此方法(见下文)?我是 Objective-C 的新手,我只是没有做对。

来自: http: //lists.apple.com/archives/Webkitsdk-dev/2008/Apr/msg00027.html

默认情况下,数据库的配额为 0;在将任何数据库存储在磁盘上之前,必须增加此配额。

WebKit 客户端应该实现 WebUIDelegate 方法- webView:frame:exceededDatabaseQuotaForSecurityOrigin:database:并在调用该方法时根据需要增加配额。此方法在 WebUIDelegatePrivate.h 中定义。它在上一个发布周期中添加得太晚,无法使其成为非私有标头。提交一个关于将此调用移动到 WebUIDelegate.h 的错误是值得的,以便它成为官方 API 的一部分。

约翰

4

4 回答 4

3

在您定义为 WebView 的委托的任何类中,您需要实现该方法,如下所示:

- (void)webView:(WebView *)sender frame:(WebFrame *)frame exceededDatabaseQuotaForSecurityOrigin:(WebSecurityOrigin *)origin database:(NSString *)databaseIdentifier {
    unsigned long long newQuotaBytes = 10 * 1024 * 1024;
    [origin setQuota:newQuotaBytes];

    // origin also responds to -usage method to return current size for all databases in this origin
}
于 2008-12-09T21:21:04.283 回答
1

从讨论区获得了一些帮助:

WebKit 的 WebKitTools 中的公共 SVN 中似乎包含此方法的实现。(该类名为 UIDelegate)。 http://trac.webkit.org/browser/trunk/WebKitTools/DumpRenderTree/mac/U ...

我假设你已经为你的 WebKit 视图创建了一个委托。在该委托类中,使用签名创建一个方法:

- (void)webView:(WebView *)sender frame:(WebFrame *)frame
exceededDatabaseQuotaForSecurityOrigin:(WebSecurityOrigin *)origin
database:(NSString *)databaseIdentifier;

您可能可以使用 UIDelegate 实现的修改版本:

- (void)webView:(WebView *)sender frame:(WebFrame *)frame
exceededDatabaseQuotaForSecurityOrigin:(WebSecurityOrigin *)origin
database:(NSString *)databaseIdentifier
{
    static const unsigned long long defaultQuota = 5 * 1024 * 1024;
    [origin setQuota:defaultQuota];
}

我没试过这个,所以YMMV。

乔恩

于 2008-12-09T21:12:43.177 回答
0

这是最终的答案。

我正在使用 MiniBrowser 示例应用程序。

在 MyDocument.m 我添加了这个函数:

- (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 setQuota: defaultQuota];
    } else { 
        NSLog(@"could not increase quota for %@", defaultQuota); 
    }
} 
于 2008-12-10T06:11:30.157 回答
0

这对我有用:https ://stackoverflow.com/a/8975014/146099 - 这与杰夫的回答略有不同。

于 2012-01-23T16:34:12.367 回答