【问题标题】:UIwebview losing css3/html formattingUIwebview 丢失 css3/html 格式
【发布时间】:2012-10-16 14:40:48
【问题描述】:

我想要做的是获取网页的某些部分/部分并显示在我的 UIWebView 中。

我试图展示的部分有一些输入字段和一个提交按钮。当我使用 UIWebview 显示提取的部分时。我失去了所有的格式。空格等细节丢失。

我将该 html 页面下载到我的计算机并手动修改(删除了不必要的部分),它在计算机上运行良好。

这是我的示例代码。看了其他相关问题无果。

-(IBAction)showContactPage {

NSString *urlContents = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"wwww.example.com/contact.html"] encoding:NSASCIIStringEncoding error:nil];

[myWebView loadHTMLString:urlContents baseURL:[NSURL URLWithString:@"http://www.example.com/"]];
}

//WebView Delegate method

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

 NSString *urlContents = [myWebView stringByEvaluatingJavaScriptFromString:@"document.getElementsByClassName('column')[0].innerHTML"]; 

 NSString *headContents = [myWebView stringByEvaluatingJavaScriptFromString:@"document.head.innerHTML"];

 urlContents = [NSString stringWithFormat:@"<html><head>%@</head><body>%@</body></html>",headContents,urlContents];

 [myWebView loadHTMLString:urlContents baseURL:[NSURL URLWithString:@"http://www.example.com/"]];

 [self.view addSubview:myWebView];

}

如果我在 UIwebview 上遗漏了什么,请告诉我。

【问题讨论】:

  • 它是你真正的代码跳过 webViewDidFinishLoad 已经修改的字符串?
  • 我首先加载带有联系页面的 webview,在委托方法 webView 完成加载中,我使用 stringByEvaluatingJavaScriptFromString 并提取联系页面的所需部分,然后再次使用新提取的 HTML 加载 webview。
  • 这个新提取的 html 是否再次触发了委托上的 webviewfinishload?
  • 是的,补习班。它再次调用 webviewfinishload。我正在使用 if 语句来区分两者。我在这里只是为了简单起见
  • 好的,看起来是正确的,可能是文档类型或字符集问题?祝你好运小丑;)

标签: iphone html ios uiwebview formatting


【解决方案1】:

找出问题所在。 stringByEvaluatingJavaScriptFromString 方法返回的是它内部的内容,而不是它的属性,因此我们丢失了格式
即。在我的情况下,下面的代码没有返回具有“列”作为类名的标签的属性

urlContents = [myWebView stringByEvaluatingJavaScriptFromString:@"document.getElementsByClassName('column')[0].innerHTML"]; 

这没有返回&lt;div id="left" class="column"&gt;,因此我丢失了格式/样式

【讨论】:

    猜你喜欢
    • 2019-11-11
    • 2019-12-29
    • 2014-06-06
    • 2015-01-15
    • 2021-01-03
    • 2014-06-19
    • 2015-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多