我需要检查完成加载后的webview是否有任何内容。
我需要的是简单的。它是我页面底部的一个小网页视图条(如广告)
我打电话
NSURLRequest *request=[NSURLRequest requestWithURL:adURL];
[gWebView loadRequest:request];
我收到了回电
-(void)webViewDidFinishLoad:(UIWebView *)webView {
但是在我的场景中,webview应该返回空,有时它会有数据。
如果我的服务器php文件没有返回任何内容,我不想显示webview。
如何验证我在回调中(或以其他任何方式)收到空白页?
答案 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;
}