2011-11-17 111 views
0

我需要保存&突出显示所选文本。使用javascript在UIWebview中突出显示文本(持久地)

我得到的范围如Calculate Position of selected text javascript/JQuery?

说但是,如何突出使用上述储值下届会议的用户选择的文本?

注:我通过Rangy's serializer module(demo)

去,但它消耗在iOS上的UIWebView太多时间在Web视图加载HTML的大型内容.... 应用程序冻结:-( 还多高亮不可用在

瘦长的串行模块。所以,我正在寻找的是,突出基础上,开始&结束存储范围值的偏移。

+0

有没有办法存储用户选定文本的节点,起始值和最终值,以在下一个会话中突出显示它? – Mani

+0

看到这个链接: [link1](http://stackoverflow.com/questions/6903292/uiwebview-css-injection-using-javascript) 和 [link2](http://stackoverflow.com/questions/ 4579304 /怎么办-I-扩大-的蓝色高亮文本功能于UIWebView中) – NrNazifi

回答

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];