获取WebView的总滚动大小(HTML内容的大小)

时间:2011-09-05 16:05:41

标签: cocoa macos webkit webview

我正在尝试很多东西,在这里发布了很多问题,但我仍然无法获得在Cocoa WebKit WebView中保存HTML页面所需的最小尺寸。
我对DOM做了一个奇怪的操作,我可以得到HTML内容大小的近似值,如图所示,我基于此调整窗口大小,几乎可以工作,但我意识到这一点:<登记/> 如果Webview足够智能以显示准确的滚动条(当然是),那么为什么程序员无法获得该值呢?有没有办法让你知道?

PS:请不要提供javascript解决方案,我需要从应用程序中实现这一点。无论如何,作为Webkit的html API应该比托管的javascript代码更精通它的内容,不应该吗?

enter image description here

2 个答案:

答案 0 :(得分:0)

您需要使用Javascript来获得适当的高度。

改编自:How to get height of entire document with JavaScript?

(function () {
    var body = document.body,
        html = document.documentElement;

    return Math.max( body.scrollHeight, body.offsetHeight, 
                        html.clientHeight, html.scrollHeight, html.offsetHeight );
})();

这个Javascript将为您提供HTML的高度。您可以将其注入WebView,如下所示:

NSString *height = [webView stringByEvaluatingJavaScriptFromString:@"(function(){var a=document.body,b=document.documentElement;return Math.max(a.scrollHeight,a.offsetHeight,b.clientHeight,b.scrollHeight,b.offsetHeight)})();"];

height现在包含HTML作为字符串的高度。

答案 1 :(得分:0)

虽然Alec Gorge的解决方案对我有用,但在将代码放入webViewDidFinishLoad委托方法时,我发现至少在iOS中(也可能在OSX的Webkit中)我得到了使用此代码也可以看到Web视图的高度:

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    int h = webView.scrollView.contentSize.height;
    self.myWebViewHeightConstraint.constant = h;
}