【问题标题】:UIWebView - calculate the loaded HTML's heightUIWebView - 计算加载的 HTML 的高度
【发布时间】:2014-04-26 05:05:30
【问题描述】:

我有一个 UIWebView,我可以在其中加载 HTML 内容(使用 CSS 进行样式化)。我希望在 webViewDidFinishLoad 方法中为 webView 设置正确的框架(特别是高度)。我要疯了。是否没有标准/统一的方法来计算 HTML 内容的高度?

具体来说,所需的高度位于名为“ABC”的 div 中。最接近正确高度的是:

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

我已经尝试了上面的 clientHeight 和 scrollHeight。我也试过 document.body.client/scroll/offsetHeight。以上都没有给我一个完美的身高值。一切都会导致 webview 的某些部分被截断,因为结果高度小于所需的值。你怎么解决这个问题?

【问题讨论】:

    标签: html ios css ios7 uiwebview


    【解决方案1】:

    NSLog(@"%f",myWebView.scrollView.contentSize.height);

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

    int height = [结果整数值];

    您可以在 html 完全加载后调用它..即在 webViewDidFinishLoading 委托中

    【讨论】:

      【解决方案2】:

      有点晚了 ;) 但答案不多,所以我会加几分钱。

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

      AFAIK - 没有。:)

      大约一年前,我和这个人打了很长时间。关键是 - webViewDidFinishLoading 在 web 视图完成加载时调用,而不是 渲染内容。当 webview 加载的内容中有一些图像时,它尤其明显。我记得在采用以下非常 hacky 的方法后,我得到了一些可以接受的结果:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-10
        • 2016-05-19
        • 1970-01-01
        相关资源
        最近更新 更多