8

読み込みが完了したときに webview にコンテンツがあるかどうかを確認する必要があります。

私が求めるものは単純です。ページの下部にある小さな Web ビュー ストリップ (広告のようなもの)

電話する

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

コールバックを受け取ります

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

しかし、私のシナリオでは、webview は空を返し、データがある場合もあります。

サーバーの php ファイルが何も返さなかった場合、webview を表示したくありません。

コールバック (またはその他の方法) で空のページを受信したことを確認するにはどうすればよいですか?

4

4 に答える 4

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:

于 2011-09-28T10:42:54.810 に答える
6

これは Jano のアプローチに基づいていますが、パフォーマンスが向上するはずです。

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

if (length.integerValue > 0) {
    NSLog(@"not empty");
}
于 2016-01-13T15:23:58.033 に答える
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:メソッドから呼び出すことができます。

于 2014-07-03T06:27:56.833 に答える