从UIWebView html中获取背景颜色?

5

我在一个UIView中有一个较小的UIWebView。我希望将UIView的背景颜色设置为与加载的HTML相同。这是否可能?

我尝试在webViewDidFinishLoad中像这样获取颜色:

 NSLog(@"color: %@", [webView stringByEvaluatingJavaScriptFromString: @"document.body.style.background"]);

但它没有返回任何东西。


你在 - (void)webViewDidFinishLoad:(UIWebView *)webView 中完成了吗? - BergP
你也可以尝试使用这个属性 document.body.style.backgroundColor。 - BergP
尝试了两种方法,但都没有成功。 - cannyboy
你应该发布你的HTML代码,因为这更像是一个JavaScript问题。 - Berry Blue
正如其他人所说,您需要在问题上更具体。您正在尝试在Webview中加载什么?是您自己的HTML还是互联网上的任何网站? - Naz Mir
也许你应该使用 document.body.computedStyle.backgroundColor,因为你的网页可能没有 style 属性。(如果 body 的 CSS 是在 <style> 块中设置的) - RnMss
2个回答

6

只需三个步骤即可运行代码:

1)复制代码并将其粘贴到您的项目中。
2)将___webView连接到xib文件中的UIWebView。
3)运行。

- (void)viewDidLoad
{
    [___webView loadHTMLString:[NSString stringWithFormat:@"<html><body id=\"mybody\" style=\"background-color:green;width:100px;height:100px;\"><b>Hello buddy</b></body></html>"] baseURL:nil];
    ___webView.delegate=self;

    [super viewDidLoad];
}

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    NSString *javaScript = @"document.body.style.background";
    NSLog(@"color is %@",[webView stringByEvaluatingJavaScriptFromString:javaScript]);
    NSLog(@"did load finish ");
}

//输出为 -----

2013-09-03 11:56:33.187 ads[3655:11303] 颜色为绿色
2013-09-03 11:56:33.188 ads[3655:11303] 加载完成


5

在HTML资源中,我使用

body bgcolor="#FF0000"

在这种情况下,我的代码应该是这样的。
- (void)webViewDidFinishLoad:(UIWebView *)webView{
NSLog(@"Done loading");
NSLog(@"color1: %@", [webView stringByEvaluatingJavaScriptFromString:     @"document.body.bgColor"]);
}

输出结果为 -

 2013-09-02 16:47:53.986 WebViewTest[14674:707] color1: #FF0000

现在,在HTML资源中,我使用


body style="background-color:#FF0000"

在这种情况下,我的代码应该是这样的。
- (void)webViewDidFinishLoad:(UIWebView *)webView{
NSLog(@"Done loading");
    NSLog(@"color1: %@", [webView stringByEvaluatingJavaScriptFromString: @"document.body.style.backgroundColor"]);

}

输出结果为 -

 2013-09-02 16:55:11.531 WebViewTest[14691:707] color1: rgb(255, 0, 0)

正如您所看到的,根据将bgcolor应用于HTML的方式不同,通过JavaScript访问它的方式也会发生变化....

希望这可以帮助您!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接