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> i obtenir le rappel p> -(void)webViewDidFinishLoad:(UIWebView *)webView {
4 Réponses :
Si vous chargez une page HTML:
NSString *string = [myWebView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('html')[0].innerHTML"]; BOOL isEmpty = string==nil || [string length]==0;
Cela fonctionne, mais il renvoie "
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é.
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; }
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: Vous pouvez l'appeler à partir de la
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"); }