【问题标题】:extract text from UIWebView从 UIWebView 中提取文本
【发布时间】:2012-06-11 01:38:45
【问题描述】:

我有一个加载了简单 rtf 文件的 UIWebView。 (包含一行“这是一个测试”)

UIWebView* webview = [[UIWebView alloc] initWithFrame:CGRectMake(5, 50, 310, 400)];
[[self view] addSubview:webview];
[webview loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"test" ofType:@"rtf"]isDirectory:NO]]];
NSString *html = [webview stringByEvaluatingJavaScriptFromString: @"all"];
NSLog (@"html:%@", html.debugDescription);

“这是文本”行正确显示在 UIWebView 内。 有谁知道是否有可能将该行文本(或更多)提取到 NSString 或其他可访问的容器中?

我知道有:

NSString *html = [webview stringByEvaluatingJavaScriptFromString: @"document.documentElement.outerHTML"];

但这(显然)在这里不起作用。有任何想法吗 ?我基本上是在尝试(假)将 rtf 文件转换为 iOS 上的 NSString。 谢谢!

【问题讨论】:

  • 你试过 document.body.innerHTML 吗?
  • 是的。和 document.body.innerText 。两者都返回空白。
  • 在调用 stringByEvaluatingJavaScriptFromString: 之前您是否要等到页面加载完毕?
  • 其实你是对的。我必须实现 webViewDidFinishLoad 委托方法,然后我开始在其中获取一些 html 结果。 sleep(int) 不是要走的路。您应该将其更改为 aswer。

标签: javascript objective-c ios uiwebview


【解决方案1】:

过去我实际上不得不做类似的事情。也许不是最优雅的,但这对我有用:

我会将文件中的文本加载到 HTML 页面中(您可以使用 UIWebView 内部的 javascript 来执行此操作,或者您可以从 Objective-C 创建一个 javascript 方法以使用 stringByEvaluatingJavaScriptFromString 进行调用)。然后您可以运行上面概述的方法调用,它应该可以正常工作,或者您可以在 Javascript 中创建一个自定义方法,该方法将捕获文本并将其返回到 Objective-C 代码。在这里,它被存储为一个字符串,可以使用了。

【讨论】:

  • 我不懂javascript。您的解决方案是 rtf 输入格式吗?
【解决方案2】:

事实证明document.documentElement.innerText 是要走的路。立即获取纯文本。

【讨论】:

    【解决方案3】:

    我们可以直接使用下面的代码从 UIWebView 中获取文本内容,而不是从 UIWebView 获取 html,并再次付出额外的努力将 html 转换为纯文本:

    NSString *plainText = [webView stringByEvaluatingJavaScriptFromString:@"document.body.textContent"];
    

    它可以节省您将 html 转换为纯文本的额外精力。

    【讨论】:

      猜你喜欢
      • 2012-07-19
      • 2011-03-21
      • 1970-01-01
      • 1970-01-01
      • 2011-08-20
      • 1970-01-01
      • 2011-11-27
      • 2010-10-26
      • 2012-05-21
      相关资源
      最近更新 更多