Выделите текст в UIWebview (постоянно), используя JavaScript - PullRequest
0 голосов
/ 17 ноября 2011

Мне нужно сохранить и выделить выделенный текст.

Я получаю диапазон, как сказано в Рассчитать положение выделенного текста javascript / JQuery?

Но как выделить выделенный пользователем текст в следующем сеансе, используя вышеуказанное сохраненное значение?

Примечание: я прошел через модуль сериализатора Рэнги (демо)

но это занимает много времени на iOS UIWebView при загрузке большого содержимого HTML в веб-представлении .... Приложение зависает :-( Также многократное выделение недоступно в модуле сериализатора Rangy.

Итак, что я ищу, это выделение на основе начального и конечного смещения сохраненного значения диапазона.

1 Ответ

0 голосов
/ 03 июня 2014

Если вы визуализируете 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];
...