iOS stringByEvaluatingJavaScriptFromString问题

时间:2013-04-01 22:47:22

标签: ios uiwebview stringbyevaluatingjavascr

我在下面的代码中设置了我的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>

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

1 个答案:

答案 0 :(得分:1)

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

您可以通过检查以下委托调用中的请求网址来检测图像是否已加载。

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

一旦你知道图像开始加载,你就可以在随后的

调用中获得它的高度和宽度
- (void)webViewDidFinishLoad:(UIWebView *)webView