问题描述
我的应用程序中有一个 webview.它会加载大部分页面,并且在加载完成时会调用函数 webViewDidFinishLoad.但是尽管页面似乎已加载,但某些页面加载并未完成.在这些情况下 - (void)webViewDidFinishLoad:(UIWebView *)webView 和 (void)webView:(UIWebView *)webView didFailLoadWithError 都不会被调用.例如:转到网站 http://www.mynevadacounty.com/ 并点击任何UIWebView 中没有完成页面加载等项目.
I have a webview in my application.It loads most of the pages and the function webViewDidFinishLoad gets called when the loading finishes.But some of the pages loading doesn't finish although the pages appears to be loaded. In these cases neither - (void)webViewDidFinishLoad:(UIWebView *)webView nor (void)webView:(UIWebView *)webView didFailLoadWithError is getting called. For eg: Go to the site http://www.mynevadacounty.com/ and when you click on any of the items such as mobile the page loading doesn't finish in the UIWebView.
这可能是什么原因?
我尝试加载的这些网站中的大多数都是共享点网站
Most of these sites that i am trying to load are sharepoint sites
推荐答案
我最初在这里对这个异常做了一个问答:UIWebView 显示 UIActivityIndicator 用于加载,但在页面初始加载后忽略其他加载请求(例如 javascript 加载的广告)
I originally did a Q&A of this anomaly here: UIWebView show UIActivityIndicator for loading but ignore additional load requests (e.g. javascript loaded advertisements) after page initially loads
问题是网页将完成加载,然后开始加载其他元素(即广告、iFrame 等)解决方案是在页面加载开始时存储当前 URL,如果 url 与上次加载的 URL 相同,则在下次加载"时存储当前 URL,而不是误报...
The problem is that the webpage will finish loading and then it begins loading other elements afterwards (i.e. advertisements, iFrames, etc.) The solution is to store the current URL when page loading begins and the next time it is "Loading" if the url is the same as the last URL loaded than it's a false positive...
(在下面的代码中,网页在 //show UIActivityIndicator 上真正开始加载,并在 //hide 上真正完成主要内容(不是您正在努力处理的额外内容)的加载UIActivityIndicator)
(In the code below the web page truly starts loading on //show UIActivityIndicator and truly finishes loading the main content (not the extra content you are struggling with) on //hide UIActivityIndicator)
//Define the NSStrings "lastURL" & "currentURL" in the .h file.
//Define the int "falsepositive" in the .h file. (You could use booleans if you want)
//Define your UIWebView's delegate (either in the xib file or in your code)
- (void)webViewDidFinishLoad:(UIWebView *)webView {
lastURL = [[NSString alloc] initWithFormat:@"%@", webView.request.mainDocumentURL];
if (falsepositive != 1) {
NSLog(@"Loaded");
//hide UIActivityIndicator
} else {
NSLog(@"Extra content junk (i.e. advertisements) that the page loaded with javascript has finished loading");
//This method may be a good way to prevent ads from loading hehe, but we won't do that
}
}
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType; {
NSURL *requestURL =[request mainDocumentURL];
currentURL = [[NSString alloc] initWithFormat:@"%@", requestURL]; //not sure if "%@" should be used for an NSURL but it worked...
return YES;
}
- (void)webViewDidStartLoad:(UIWebView *)webView {
if ([currentURL isEqualToString:lastURL]) {
falsepositive = 1;
NSLog(@"The page is loading extra content with javascript or something, ignore this");
} else {
falsepositive = 0;
NSLog(@"Loading");
//show UIActiviyIndicator
}
}
这篇关于UIWebView 没有完成加载?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!


大气响应式网络建站服务公司织梦模板
高端大气html5设计公司网站源码
织梦dede网页模板下载素材销售下载站平台(带会员中心带筛选)
财税代理公司注册代理记账网站织梦模板(带手机端)
成人高考自考在职研究生教育机构网站源码(带手机端)
高端HTML5响应式企业集团通用类网站织梦模板(自适应手机端)