如何获取WebView内容高度

 我来答
greystar_cn
2018-08-02 · 知道合伙人软件行家
greystar_cn
知道合伙人软件行家
采纳数:16407 获赞数:17260
本人主要从事.NET C#方向的技术开发工作,具有10多年的各类架构开发工作经验。

向TA提问 私信TA
展开全部
1. 通过webview的didFinishLoad:方法,这个时候webview已经加载完成,可以获得真实高度。
2. 通过js来获取实际页面的高度,获取的时机也通过js来监听。
3. 通过检测webView.scrollView.contentSize,只要这个值发生改变,你马上就能够被通知。注册观察者的代码类似这样:
[webView.scrollView addObserver:self forKeyPath:@"contentSize" options:NSKeyValueObservingOptionNew
context:&webViewContext]

然后在观察者中实现- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context,你就随时可以监测到webView的高度变化了
旱雨甘霖2
2017-10-17 · TA获得超过198个赞
知道小有建树答主
回答量:284
采纳率:71%
帮助的人:58.9万
展开全部
获取webview的高度,如果想早点获取出来,就在onProgressChanged中获取,如果不着急就在onPageFinished中获取.如下,根据业务需求,总有些问题再针对性调整.

mWebView.setWebChromeClient(new WebChromeClient() {

@Override
public void onProgressChanged(WebView view, int newProgress) {
super.onProgressChanged(view, newProgress);
//加载中获取高度
int height = mBannerWebView.getMeasuredHeight();
if (height > ...) {
//do something

}
}
});

mBannerWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (!loadingFinished) {
redirect = true;
}
loadingFinished = false;
view.loadUrl(url);
return true;
}

@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
loadingFinished = false;
}

@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
if (!redirect) {
loadingFinished = true;
}
if (loadingFinished && !redirect) { //加载完毕
//to something , 比如获取高度

} else {
redirect = false;
}
}
});
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式