UIWebView - 计算加载的HTML的高度

时间:2014-03-19 18:09:25

标签: html ios css ios7 uiwebview

我有一个UIWebView,我加载HTML内容(使用CSS风格化)。我希望在webViewDidFinishLoad方法中为webView设置正确的帧(特别是高度)。我疯了。是否没有标准/统一的方法来确定HTML内容的高度?

具体而言,所需的高度位于名为" ABC"的div中。最接近正确高度的是:

[webView stringByEvaluatingJavaScriptFromString:@"document.getElementById(\"ABC\").offsetHeight;"].intValue)]

我已经尝试过clientHeight和scrollHeight来实现上述目标。我还尝试过document.body.client / scroll / offsetHeight。以上都没有给我一个完美的身高值。一切都会导致webview的某些部分被切断,因为合成高度小于所需的值。你是如何解决这个问题的?

2 个答案:

答案 0 :(得分:0)

的NSLog(@ “%F”,myWebView.scrollView.contentSize.height);

OR

NSString * result = [webView stringByEvaluatingJavaScriptFromString:@“document.body.offsetHeight;”];

int height = [result integerValue];

你可以在html完全加载后调用这个...在webViewDidFinishLoading委托中

答案 1 :(得分:0)

相当晚了;)但答案并不多,所以我会加上几分钱。

  

是否没有标准/统一的方法来确定HTML内容   高度?

AFAIK - 编号:)

大约一年前,我和这个人争吵了很长时间。关键是 - 当webview完成加载,而不是呈现内容时,会调用webViewDidFinishLoading。当您在webview加载的内容中有一些图像时,它尤其可见。我记得在采取以下非常黑客的方法后,我得到了一些可接受的结果:

webview加载的页面是从本地存储加载并使用jQuery。在WebView的javascript环境中,我正在收听$(window).load()事件http://api.jquery.com/load-event/,在收到我调用应用程序的本机端之后(您可以使用一个库,例如iOS JavaScript bridge) ,将当前内容高度作为调用参数传递。

当时我得到了一些可接受的结果(一些故障仍然时有发生)。总的来说 - 人们甚至不应该开始处理这个问题。它非常hacky并且不可靠。许多人尝试使用WebView作为“超级标签”。如果它完全可行 - 最好查看TextKit。人们可以用它做很棒的事情。