2011-09-28 16 views
8

मैं जब पूरा लोड हो रहा है किसी भी सामग्री है या नहीं वेबदृश्य अगर जाँच करने के लिए की जरूरत है।कैसे एक जांच करता है, तो UIWebView खाली है या नहीं

मुझे जो चाहिए वह सरल है। मेरी पृष्ठों के नीचे (एक विज्ञापन की तरह)

मैं फोन

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

मैं कॉलबैक मिलता है पर यह एक छोटा सा वेबव्यू पट्टी

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

लेकिन मेरी स्थिति में वेबव्यू खाली लौटा देगा और कभी-कभी इसमें डेटा होगा।

मैं वेबव्यू को दिखाने के लिए है, तो अपने सर्वर php फ़ाइल कुछ भी नहीं लौटे नहीं करना चाहती।

मैं कैसे सत्यापित कर सकता हूं कि मुझे कॉलबैक (या किसी अन्य तरीके) में एक खाली पृष्ठ प्राप्त हुआ?

उत्तर

14

आप एक HTML पृष्ठ लोड हो रहा है, तो कर रहे हैं:

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

या आप सामग्री पहले टेस्ट लोड कर सकता है, अगर यह खाली नहीं है, और उसके बाद वेबव्यू करने के लिए इसे खाते हैं। UIWebView's loadHTMLString:baseURL: या loadData:MIMEType:textEncodingName:baseURL: देखें।

+0

यह काम करता है, लेकिन यह रिटर्न "" स्ट्रिंग में है, हालांकि मैं यह जाँच करके काम कर सकता है अगर मैं में है कि मिल स्ट्रिंग। सहायता के लिए धन्यवाद। – Anand

+5

"टिप्पणी-बाद-एक-वर्ष की चीज़" के लिए खेद है, लेकिन इससे मदद मिल सकती है। बस ('html') को ('body') में बदलें और इसे अच्छी तरह से काम करना चाहिए। –

+1

मैं यह पता लगाने के लिए इसका उपयोग करने की कोशिश कर रहा था कि क्या एक विकृत पीडीएफ फ़ाइल लोड की गई है (या, वास्तव में, लोड नहीं किया गया है), और न ही "शरीर" और न ही "एचटीएमएल" इस उद्देश्य के लिए काम करता है। दिलचस्प बात यह है कि, आईओएस 7 पर, प्रतिनिधि विधि, अगर पीडीएफ दस्तावेज खराब हो गया है तो विफलता लोड नहीं किया जाता है। –

0

मेरे मामले में, मैं अगर पीडीएफ विकृत हो गया पता लगाने के लिए देख रहा था। यानी, वेब दृश्य खाली होगा क्योंकि पीडीएफ लोड नहीं किया जा सका। चूंकि आईओएस 7.1.1 के साथ, मुझे नहीं किया गया था FailLoadWithError प्रतिनिधि कॉलबैक, मुझे ऐसा करने के लिए एक अलग तरीका चाहिए। मैं वेब व्यू में पीडीएफ दस्तावेज़ लोड करने का प्रयास करने से पहले नीचे दी गई विधि का उपयोग कर समाप्त हुआ।

// 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; 
} 
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 से कॉल कर सकते हैं।

5

यह जानो का दृष्टिकोण पर आधारित है लेकिन बेहतर प्रदर्शन करना चाहिए:

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

if (length.integerValue > 0) { 
    NSLog(@"not empty"); 
} 
संबंधित मुद्दे