iOS 【奇巧淫技】获取webView内容高度
2017-12-13 17:15
495 查看
针对获取webView高度问题之前写过一个方案——通过监听WebView的scrollView的变化来实时更新高度
附上链接: iOS【终极方案】精准获取webView内容高度,自适应高度
本文是给出第二种方案,解决网页内大量图片、动图导致的内容高度获取不准确:
直接上代码:
这是一个取巧的办法,不够灵活,实践证明能够解决固定结构的网页高度获取,对于不确定结构的网页,建议不要使用此方法,容易有误差。
大神们有解决这类问题的完美办法还望及时联系我,为了帮到更多人~
作者:臭码农
链接:https://www.jianshu.com/p/e98e3747127c
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
附上链接: iOS【终极方案】精准获取webView内容高度,自适应高度
本文是给出第二种方案,解决网页内大量图片、动图导致的内容高度获取不准确:
直接上代码:
#pragma mark ————— 给每个Img标签添加JS事件 ————— -(void)webViewDidFinishLoad:(UIWebView *)webView { NSString *js = @"var imgs = document.getElementsByTagName(\"img\");" "for(var i=0;i<imgs.length;i++){" " var img = imgs[i];" " img.onload=function(){window.location.href=('yourAppUrlSchemes://ImgLoaded');}" "}"; //yourAppUrlSchemes 是在 info.plist - URL Types里设置的当前URL Schemes [webView stringByEvaluatingJavaScriptFromString:js]; } #pragma mark =============== 拦截webview的请求,获取网页中最后一个可视元素的位置 =============== - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { NSString *urlString = [[request URL] absoluteString]; urlString = [urlString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSArray *urlComps = [urlString componentsSeparatedByString:@"://"]; NSLog(@"urlString=%@---urlComps=%@",urlString,urlComps); if (urlComps.count==2&&[urlComps[1] isEqualToString:@"ImgLoaded"]) { //imgload 图片加载完成,重新获取高度 CGSize fittingSize = [_webView sizeThatFits:CGSizeZero]; //此处我获取的是网页中倒数第三个标签的位置,可以根据要加载的网页结构设定取倒数第几个标签的位置可以代表整个网页高度 CGFloat lastHeight =[[_webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName(\"body\")[0].children[document.getElementsByTagName(\"body\")[0].children.length-3].offsetTop"] floatValue]; NSLog(@"webView:%@",NSStringFromCGSize(fittingSize)); _webView.frame = CGRectMake(0, 0, fittingSize.width, lastHeight); [self.tableView beginUpdates]; [self.tableView setTableHeaderView:_webView]; [self.tableView endUpdates]; } return YES; }上述思路是通过给每个img标签添加onload事件,事件执行内容就是给APP自身发送通知,APP在shouldStartLoadWithRequest 回调内截获将要发出的请求,并重新计算网页内容高度。
这是一个取巧的办法,不够灵活,实践证明能够解决固定结构的网页高度获取,对于不确定结构的网页,建议不要使用此方法,容易有误差。
大神们有解决这类问题的完美办法还望及时联系我,为了帮到更多人~
作者:臭码农
链接:https://www.jianshu.com/p/e98e3747127c
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
相关文章推荐
- iOS【终极方案】精准获取webView内容高度,自适应高度
- iOS 【野路子】获取WKWebView内容高度做H5原生连接
- iOS开发 精准获取webView内容高度
- iOS获取webView的内容高度
- iOS【终极方案】精准获取webView内容高度,自适应高度
- iOS 获取WKWebView内容高度做H5原生连接
- iOS【野路子】精准获取webView内容高度,自适应高度
- iOS【野路子】精准获取webView内容高度,自适应高度
- iOS【终极方案】精准获取webView内容高度,自适应高度
- iOS项目之获取WebView的高度
- iOS的WebView自适应内容高度
- 完美方案——iOS的WebView自适应内容高度
- iOS webView获取html内容
- iOS 基于JavaScriptCore 不等webView加载完毕就交互,网页获取原生内容。 webView的高级用法之JS交互,js与oc的相互调用
- iOS 【偏方】获取webView高度那些坑!!!
- iOS的WebView自适应内容高度(真实高度)
- iOS 获取 webView 加载完成后的高度
- ios webview自适应实际内容高度4种方法
- ios webview自适应实际内容高度4种方法
- iOS UIWebView、WKWebView获取内容高度