iOS stringByEvaluatingJavaScriptFromString问题

iOS stringByEvaluatingJavaScriptFromString问题,ios,uiwebview,stringbyevaluatingjavascr,Ios,Uiwebview,Stringbyevaluatingjavascr,下面是设置UIWebView的代码: - (void)webViewDidFinishLoad:(UIWebView *)webView { [webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.getElementById(\"image\").src=\"q%@.png\";", self.imageIndex]]; NSLog(@"%f", [[webV

下面是设置UIWebView的代码:

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

    [webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.getElementById(\"image\").src=\"q%@.png\";", self.imageIndex]];

    NSLog(@"%f", [[webView stringByEvaluatingJavaScriptFromString:@"document.getElementById(\"image\").height;"] floatValue]);

    CGFloat width = [[webView stringByEvaluatingJavaScriptFromString:@"document.width"] floatValue];
    CGFloat height = [[webView stringByEvaluatingJavaScriptFromString:@"document.height"] floatValue];   


    CGSize contentSize = CGSizeMake(width, height);

    [self setUpNewSize:contentSize];
}
我为id为的对象设置了新的图像(它可以正常工作)。但是大小没有改变。正如您所看到的,我使用NSLog打印高度值,但高度显示为0.0000

这是我的HTML文件:

<!DOCTYPE html>
<html>
    <head>

        <title>Question 1</title>


    </head>

    <body>

        <h3 id="header">Question 1</h3>

        <img id="image" src="" alt="" width="100%">

    </body>

</html>

问题1
问题1

我有不同的高度为每个图像和它的变化动态。所以我的问题是,当我调用stringByEvaluatingJavaScriptFromString时,为什么document和img的高度没有改变。也许我需要创建一些重载方法吗?

设置src属性后,您将立即访问高度和宽度。您应该先等待图像加载

您可以通过检查以下委托调用中的请求url来检测图像是否正在加载

-(BOOL)webView:(UIWebView*)webView应该加载请求:(NSURLRequest*)请求导航类型:(UIWebView导航类型)导航类型

一旦知道图像开始加载,就可以在随后的调用中获取其高度和宽度

- (void)webViewDidFinishLoad:(UIWebView *)webView

设置src属性后,您将立即访问高度和宽度。您应该先等待图像加载

您可以通过检查以下委托调用中的请求url来检测图像是否正在加载

-(BOOL)webView:(UIWebView*)webView应该加载请求:(NSURLRequest*)请求导航类型:(UIWebView导航类型)导航类型

一旦知道图像开始加载,就可以在随后的调用中获取其高度和宽度

- (void)webViewDidFinishLoad:(UIWebView *)webView

谢谢你的回复,但我不确定我是否正确理解了你。我已经添加了您的方法,并在那里输入了我的图像代码。但加载后我没有看到任何变化。我已经设置了断点,首先调用shouldStartLoadWithRequest,然后webViewDidFinishLoad,但是内容没有像我想的那样加载,这意味着我无法处理DOM对象,因为它们还不可用。感谢您的响应,但我不确定我是否正确理解了您。我已经添加了您的方法,并在那里输入了我的图像代码。但加载后我没有看到任何变化。我首先设置了断点shouldStartLoadWithRequest,然后设置了webViewDidFinishLoad,但内容并没有像我想的那样加载,这意味着我无法处理DOM对象,因为它们还不可用。