获取 UIWebView 的选定文本

Posted

技术标签:

【中文标题】获取 UIWebView 的选定文本【英文标题】:Getting the selected text of a UIWebView 【发布时间】:2012-09-22 09:16:57 【问题描述】:

我正在尝试使用以下代码行访问 UIWebView 中当前选定的文本:

NSString *highlighted = [_webView stringByEvaluatingjavascriptFromString:@"window.getSelection();"];

但它只返回一个空字符串。关于我缺少什么的任何想法?

【问题讨论】:

好问题,这个问题的答案让我免于头痛.. :) 【参考方案1】:

试试这个:

NSString * highlighted = [_webView stringByEvaluatingJavaScriptFromString:@"window.getSelection().toString()"];

【讨论】:

【参考方案2】:

我认为这会有所帮助

NSString *selection = [self.webView stringByEvaluatingJavaScriptFromString:@"window.getSelection().toString()"];

也请检查link

【讨论】:

我猜你是第一个给出正确答案的人,所以我将把这个标记为正确。谢谢。 @f***789:感谢您的评论。我认为 Maulik 和 H2CO3 最先回答。 @MidhunMP 谢谢,我使用此代码获取了文本,但我如何存储此文本并在我们打开和阅读页面时重新获取它【参考方案3】:

我也偶然发现了这个问题,这真的很令人沮丧。我不完全记得我从哪里得到解决方案,但它是以下内容; getSelection() 返回一个无法转换为字符串的 JavaScript 对象。您必须将其显式转换为 JavaScript 代码中的字符串:

NSString *highlighted = [_webView stringByEvaluatingJavaScriptFromString:@"window.getSelection().toString();"];

See it in action.

【讨论】:

【参考方案4】:

在 swift 中:self.webView.stringByEvaluatingJavaScriptFromString("window.getSelection().toString();")

Javascript 末尾的分号是必须的,没有这个就不行!

【讨论】:

【参考方案5】:

用 swift 试试这个:

// stringByEvaluatingJavaScript retunr optional string, hence use if-let block

if let selectedString = self.webView.stringByEvaluatingJavaScript(from: "window.getSelection().toString()") 
   print(selectedString - \(selectedString))

【讨论】:

以上是关于获取 UIWebView 的选定文本的主要内容,如果未能解决你的问题,请参考以下文章

如何获取 UIWebView 中选定文本的坐标(CGRect)?

从 uiwebview Xcode 中获取选定的文本

显示 UIMenuController 时获取选定的文本

检测 UIWebView 文本选择中的文本选择变化

ios,获取两个成员变量中的任何一个的访问器?

使用WKWebView替换UIWebView