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

Pet*_*uza 5 macos cocoa webkit webview

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

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

在此处输入图片说明

Ale*_*rge 0

您需要使用 Javascript 来获得正确的高度。

改编自:如何使用 JavaScript 获取整个文档的高度?

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

    return Math.max( body.scrollHeight, body.offsetHeight, 
                        html.clientHeight, html.scrollHeight, html.offsetHeight );
})();
Run Code Online (Sandbox Code Playgroud)

该 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)})();"];
Run Code Online (Sandbox Code Playgroud)

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