我正在尝试很多东西,在这里发布了很多问题,但我仍然无法获得在Cocoa WebKit WebView中保存HTML页面所需的最小尺寸。
我对DOM做了一个奇怪的操作,我可以得到HTML内容大小的近似值,如图所示,我基于此调整窗口大小,几乎可以工作,但我意识到这一点:<登记/>
如果Webview足够智能以显示准确的滚动条(当然是),那么为什么程序员无法获得该值呢?有没有办法让你知道?
PS:请不要提供javascript解决方案,我需要从应用程序中实现这一点。无论如何,作为Webkit的html API应该比托管的javascript代码更精通它的内容,不应该吗?
答案 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;
}