Bir WebView veritabanı kota temsilci uygulanması

oy
3

Nasıl bu yöntemi (aşağıya bakınız) uygularız? Ben Objective-C için yeni ve ben sadece doğru almıyorum.

Gönderen: http://lists.apple.com/archives/Webkitsdk-dev/2008/Apr/msg00027.html

Varsayılan olarak veri tabanları 0 kontenjanı var; Herhangi bir veritabanı diskte saklanır önce bu kota arttırılmalıdır.

WebKit müşteriler WebUIDelegate yöntemi uygulamak gerekir - webView:frame:exceededDatabaseQuotaForSecurityOrigin:database:ve bu yöntem çağrıldığında arzu gibi payı artar. Bu yöntem, WebUIDelegatePrivate.h tanımlanmıştır. Bu özel olmayan bir başlığın dönüştürebilmek için önceki sürüm döngüsünde çok geç eklenmiştir. O resmi API parçası olacak şekilde WebUIDelegate.h için bu çağrıyı taşıma hakkında hata bildiriminde da fayda var.

John

Oluştur 09/12/2008 saat 19:52
kaynak kullanıcı
Diğer dillerde...                            


4 cevaplar

oy
3

ne olursa olsun sınıf olarak size, böyle bir şey bu yöntemi uygulamak gerekir sizin WebView'da için temsilci olarak tanımladığınız:

- (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
}
Cevap 09/12/2008 saat 22:21
kaynak kullanıcı

oy
1

Bir tartışma panosu biraz yardım var:

Kamu SVN'de WebKit'in WebKitTools dahil bu yöntemin bir uygulama gibi görünüyor. (Sınıf UIDelegate adlandırılır). http://trac.webkit.org/browser/trunk/WebKitTools/DumpRenderTree/mac/U ...

Ben size WebKit görünümü için bir temsilci oluşturduk varsayıyorum. Bu temsilci sınıfında, imzası ile bir yöntem oluşturun:

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

Muhtemelen UIDelegate uygulanma değiştirilmiş bir sürümünü kullanabilirsiniz:

- (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];
}

Ben, bu denenmiş YMMV yüzden değil.

Jon

Cevap 09/12/2008 saat 22:12
kaynak kullanıcı

oy
0

Bu benim için çalıştı: https://stackoverflow.com/a/8975014/146099 - bu Jeff'in Yanıt hafif bir varyasyonu bu.

Cevap 23/01/2012 saat 17:34
kaynak kullanıcı

oy
0

İşte son kararım bu.

Ben MiniBrowser örnek uygulamasını kullanıyordu.

MyDocument.m ben bu fonksiyonu ekledi:

- (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); 
    }
} 
Cevap 10/12/2008 saat 07:11
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more