使用javascript在UIWebview(持久性)中突出显示文本

时间:2011-11-17 10:11:15

标签: javascript ios uiwebview highlighting

我需要保存&突出显示所选文本。

我得到Calculate Position of selected text javascript/JQuery?

中所述的范围

但是,如何使用上面存储的值突出显示用户在下一个会话中选择的文本?

注意:我经历了Rangy's serializer module (demo)

但是在iOS UIWebView上在Web视图中加载大量html内容时会花费很多时间.... 应用程序冻结:-( 此外,Rangy的串行器模块中还没有多重突出显示。

所以我正在寻找的是,基于开始和重点突出显示存储的范围值的结束偏移量。

1 个答案:

答案 0 :(得分:0)

如果您要渲染html文件,那么您可以通过以下方式执行此操作。它会突出显示用户文本,然后通过重写html文件将其保存回来,从而保留高亮显示。

 NSString *uuid = [[NSUUID UUID] UUIDString];

 NSString *insertSpan = [NSString stringWithFormat:@"var range = window.getSelection().getRangeAt(0);var selectionContents   = range.extractContents();alert(selectionContents); var span                = document.createElement(\"span\");span.appendChild(selectionContents);span.setAttribute(\"class\",\"uiWebviewHighlight\");span.style.backgroundColor  = \"#99FF00\";span.setAttribute(\"id\", \"%@\");range.insertNode(span);",uuid];
 [webView stringByEvaluatingJavaScriptFromString:insertSpan];

 NSString *document = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('html')[0].innerHTML"];

 NSData *data = [document dataUsingEncoding:NSUTF8StringEncoding];

 [data writeToFile:<file location> atomically:YES];