8
votes

Comment vérifier si UiWebView est vide ou non

J'ai besoin de vérifier si un webview lorsque le chargement terminé a un contenu ou non.

Ce dont j'ai besoin est simple. C'est une petite bande WebView au bas de mes pages (comme une annonce) p>

i appel p> xxx pré>

i obtenir le rappel p>

-(void)webViewDidFinishLoad:(UIWebView *)webView {


0 commentaires

4 Réponses :


14
votes

Si vous chargez une page HTML:

NSString *string = [myWebView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('html')[0].innerHTML"];
BOOL isEmpty = string==nil || [string length]==0;


3 commentaires

Cela fonctionne, mais il renvoie " " dans la chaîne, bien que je puisse le faire fonctionner en vérifiant si je reçois cela dans la chaîne. Merci pour l'aide.


Désolé pour le "commentaire-après-un an", mais cela pourrait aider. Juste changer ("html") à ("corps") et cela devrait bien fonctionner.


J'essayais d'utiliser cela pour détecter si un fichier PDF mal formé avait été chargé (ou, réellement, non chargé), ni ni «corps» ni «html» ne fonctionne à cet effet. Fait intéressant, sur iOS7, la méthode des délégués, Didfailloadwitherror n'a pas été appelée si le document PDF est mal formé.



0
votes

Dans mon cas, je cherchais à détecter si le PDF était mal formé. I.E., la vue Web serait vide car le PDF n'a pas pu être chargé. Depuis avec IOS 7.1.1, je ne recevais pas le rappel du délégué de DidfailloadwithError, j'avais besoin d'une manière différente de le faire. J'ai fini par utiliser la méthode ci-dessous avant de tenter de charger le document PDF dans la vue Web.

// See https://developer.apple.com/library/ios/documentation/graphicsimaging/conceptual/drawingwithquartz2d/dq_pdf/dq_pdf.html
- (BOOL) isValidPDFDoc: (NSURL *) deviceLocalURL {
    CFStringRef path;
    CFURLRef url;
    CGPDFDocumentRef document;
    size_t count;
    BOOL validDocument = YES;

    // Must use path of URL not absoluteString here.
    path = CFStringCreateWithCString (NULL, [[deviceLocalURL path] cStringUsingEncoding:NSASCIIStringEncoding],
                                      kCFStringEncodingUTF8);
    url = CFURLCreateWithFileSystemPath (NULL, path, // 1
                                         kCFURLPOSIXPathStyle, 0);
    CFRelease (path);
    document = CGPDFDocumentCreateWithURL (url);// 2
    if (!document) {
        validDocument = NO;
    }

    CFRelease(url);
    count = CGPDFDocumentGetNumberOfPages (document);// 3
    if (count == 0) {
        validDocument = NO;
    }

    CGPDFDocumentRelease (document);

    return validDocument;
}


0 commentaires

4
votes

Juste répondre à un ancien poste, mais peut-être que de nouveaux arrivants le trouveront utiles. J'ai eu du mal avec le même problème et j'ai trouvé cette solution à travailler dans mon cas: xxx

Vous pouvez l'appeler à partir de la WebviewDidfinishloadload: méthode.


0 commentaires

6
votes

Ceci est basé sur l'approche de Jano, mais devrait mieux fonctionner:

NSString *script = @"document.getElementsByTagName('body')[0].innerHTML.length";
NSString *length = [self.webView stringByEvaluatingJavaScriptFromString:script];

if (length.integerValue > 0) {
    NSLog(@"not empty");
}


0 commentaires