需求:图文混排文章内容,文章结束下面有推荐的相关文章,相关视频,以及评论区
实现:tableView的一个section里的一个cell里装一个wkWebView,wkWebView加载html字符串,或者加载h5(目前使用的是加载h5)
问题:需要在h5页面加载完成后得到页面高度,刷新tableVie,但是:
//didFinishNavigation调用时并不代表网页的所有内容都已经加载完了,如一些js文件可能并没有加载完,
//如果此时通过webview调用一些js文件中的方法时可能会失败,解决办法是didFinishNavigation完成后等30ms左右,
//或者通过js调native的方法来通知native网页中的js脚本已加载完成。
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation {
WS()
[webView evaluateJavaScript:@"document.body.scrollHeight;" completionHandler:^(id result, NSError * error) {
if (result) {
CGFloat webViewHeight = [result floatValue];
if (webViewHeight>0) {
weakSelf.model.webHeight = webViewHeight+20;
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:1 inSection:0];
[weakSelf.mainTableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:(UITableViewRowAnimationAutomatic)];
}
}
}
然而,以上回调方法,回调时并不能拿到高度,所以,我延时1秒后拿,还是不一定能拿到。
解决方案:
H5那边在声明周期里获取到页面高度后js交互给我,我再更新页面😊😊😊�