5

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

我试过,在webViewDidFinishLoad,得到这样的颜色:

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

..但它不返回任何东西。

4

2 回答 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 广告 [3655:11303] 颜色为绿色
2013-09-03 11:56:33.188 广告 [3655:11303] 加载完成

于 2013-09-03T05:44:43.873 回答
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 的方式,也会改变您通过 java 脚本访问它的方式....

希望这可以帮助!

于 2013-09-02T11:27:10.283 回答