我有一个UIWebView,我加载HTML内容(使用CSS风格化)。我希望在webViewDidFinishLoad方法中为webView设置正确的帧(特别是高度)。我疯了。是否没有标准/统一的方法来确定HTML内容的高度?
具体而言,所需的高度位于名为" ABC"的div中。最接近正确高度的是:
[webView stringByEvaluatingJavaScriptFromString:@"document.getElementById(\"ABC\").offsetHeight;"].intValue)]
我已经尝试过clientHeight和scrollHeight来实现上述目标。我还尝试过document.body.client / scroll / offsetHeight。以上都没有给我一个完美的身高值。一切都会导致webview的某些部分被切断,因为合成高度小于所需的值。你是如何解决这个问题的?
答案 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。人们可以用它做很棒的事情。