我需要保存&突出显示所选文本。
我得到Calculate Position of selected text javascript/JQuery?
中所述的范围但是,如何使用上面存储的值突出显示用户在下一个会话中选择的文本?
注意:我经历了Rangy's serializer module (demo)
但是在iOS UIWebView上在Web视图中加载大量html内容时会花费很多时间.... 应用程序冻结:-( 此外,Rangy的串行器模块中还没有多重突出显示。
所以我正在寻找的是,基于开始和重点突出显示存储的范围值的结束偏移量。
答案 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];