如何检查UIWebView是否为空

时间:2011-09-28 10:37:16

标签: ios uiwebview uiwebviewdelegate

我需要检查完成加载后的webview是否有任何内容。

我需要的是简单的。它是我页面底部的一个小网页视图条(如广告)

我打电话

NSURLRequest *request=[NSURLRequest requestWithURL:adURL];
[gWebView loadRequest:request];

我收到了回电

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

但是在我的场景中,webview应该返回空,有时它会有数据。

如果我的服务器php文件没有返回任何内容,我不想显示webview。

如何验证我在回调中(或以其他任何方式)收到空白页?

4 个答案:

答案 0 :(得分:14)

如果您要加载HTML页面:

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

或者您可以先加载内容,测试它是否为空,然后将其提供给webview。请参阅UIWebView's loadHTMLString:baseURL:loadData:MIMEType:textEncodingName:baseURL:

答案 1 :(得分:6)

这是基于Jano的方法,但应该表现得更好:

ReferenceError: loki is not defined
at Object.Loki (.../loki-angular.js:29:16)
at Object.invoke (https://code.angularjs.org/1.2.12/angular.js:3710:17)

答案 2 :(得分:4)

回复旧帖子,但也许新来的人会发现它很有用。我遇到了同样的问题,发现这个解决方案适用于我的情况:

if (webView.request.URL.absoluteURL == nil) {
        NSLog(@"nil webby");
        NSLog(@"url: %@", webView.request.URL.absoluteURL);
        // Perform some task when the url is nil
    } else {
        NSLog(@"loaded webby");
        NSLog(@"url: %@", webView.request.URL.absoluteURL);
        // Perform some task when the url is loaded
}

您可以从 webViewDidFinishLoad:方法调用它。

答案 3 :(得分:0)

在我的情况下,我希望检测PDF是否格式错误。即,Web视图将为空,因为无法加载PDF。由于使用iOS 7.1.1,我没有获得didFailLoadWithError委托回调,我需要一种不同的方式来执行此操作。在尝试将PDF文档加载到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;
}