2011-11-17 49 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];