gpt4 book ai didi

javascript - Objective-C – 在可能修改文档内容后获取 UIWebView 动态 size.height

转载 作者:太空宇宙 更新时间:2023-11-03 19:12:14 25 4
gpt4 key购买 nike

我正在根据其中的内容动态调整我的 UIWebView 的大小。如果有很多内容,它可能会跨越 UIWebView 的高度到 1000 像素,如果内容较少,它可能会跨越到 500 像素(因此 UIWebView 将具有从 0 到 n 像素的任意高度)。我用来在加载文档后找出 UIWebView 高度的代码是这样的:

- (void)webViewDidFinishLoad:(UIWebView *)webView {

// Change the height dynamically of the UIWebView to match the html content
CGRect webViewFrame = webView.frame;
webViewFrame.size.height = 1;
webView.frame = webViewFrame;
CGSize fittingSize = [webView sizeThatFits:CGSizeZero];
webViewFrame.size = fittingSize;
webViewFrame.size.width = 276; // Making sure that the webView doesn't get wider than 276 px
webView.frame = webViewFrame;

float webViewHeight = webView.frame.size.height;
}

这非常有效。但为了增加复杂性,我使用 javascript (jquery) 来检查文档中是否存在宽度超过 276 像素(我的 UIWebView 的宽度)的图像。

如果 有一个更宽的图像,我将一个类添加到名为“oversized”的 img 标签,并有一个 css 规则可以正确缩放图像,因此它不会超过 276 像素.由于 javascript 在文档加载完成后运行,我无法再“捕获”UIWebView 高度。 如何在运行 javascript 后获取新的文档高度?

我使用的 javascript 如下所示:

<script type='text/javascript' src='http://code.jquery.com/jquery-1.4.2.js'></script>                            
<script type='text/javascript'>
<![CDATA[
$(window).load(function(){
$(document).ready(function() {
$('img').each(function(e) {
if ($(this).width() > 276) {
$(this).parent().addClass('oversized');
}
});
});
});
//]]>
</script>

还有 CSS:

.oversized * { 
border: 2px solid red;
width: 100%;
height: auto;
}

最佳答案

在您的 -webViewDidFinishLoad: 方法中,您可以尝试添加

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

此外,不要使用 jQuery 来尝试查找超大图像 - 在您的 CSS 中,只需将“宽度:100%”更改为“最大宽度:100%”并为所有图像设置它:

img { 
border: 2px solid red;
max-width: 100%;
height: auto;
-webkit-box-sizing: border-box;
}

box-sizing 规则将确保边框不会在宽度上增加额外的像素。

关于javascript - Objective-C – 在可能修改文档内容后获取 UIWebView 动态 size.height,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7922099/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com