Implementarea unui contingent delegat bază de date WebView

voturi
3

Cum pot pune în aplicare această metodă (vezi mai jos)? Sunt nou la Objective-C, și eu sunt doar nu-l obtinerea dreapta.

De la: http://lists.apple.com/archives/Webkitsdk-dev/2008/Apr/msg00027.html

În mod implicit bazele de date au o cotă de 0; această cotă trebuie să crească înainte de orice bază de date vor fi stocate pe disc.

Clienții WebKit ar trebui să pună în aplicare metoda WebUIDelegate - webView:frame:exceededDatabaseQuotaForSecurityOrigin:database:și crește cota așa cum se dorește , atunci când această metodă se numește. Această metodă este definită în WebUIDelegatePrivate.h. A fost adăugat prea târziu în ciclul anterior de eliberare să - l facă într - un antet non-privat. Ar fi util să se depună o eroare despre mutarea acestui apel la WebUIDelegate.h , astfel încât aceasta este parte a API - ului oficial.

Ioan

Întrebat 09/12/2008 la 19:52
sursa de către utilizator
În alte limbi...                            


4 răspunsuri

voturi
3

Indiferent de clasa pe care ați definit ca delegat pentru VizualizareWeb dumneavoastră trebuie să pună în aplicare această metodă, ceva de genul:

- (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
}
Publicat 09/12/2008 la 22:21
sursa de către utilizator

voturi
1

Am niște ajutor de la un forum de discuții:

Se pare că există o punere în aplicare a acestei metode sunt incluse în WebKitTools WebKit în SVN lor publice. (Clasa este numit UIDelegate). http://trac.webkit.org/browser/trunk/WebKitTools/DumpRenderTree/mac/U ...

Sunt presupunând că ați creat un delegat pentru afișarea WebKit. În această clasă delegat, a crea o metodă cu semnătura:

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

Puteți utiliza, probabil, o versiune modificată a punerii în aplicare a lui 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];
}

Nu am încercat acest lucru, așa că YMMV.

Jon

Publicat 09/12/2008 la 22:12
sursa de către utilizator

voturi
0

Aceasta a lucrat pentru mine: https://stackoverflow.com/a/8975014/146099 - este o ușoară variație răspunsul lui Jeff.

Publicat 23/01/2012 la 17:34
sursa de către utilizator

voturi
0

Iată răspunsul final.

Am fost folosind aplicația de probă MiniBrowser.

În MyDocument.m am adăugat această funcție:

- (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); 
    }
} 
Publicat 10/12/2008 la 07:11
sursa de către utilizator

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