我正在开发一个电子阅读器项目,用户可以在其中突出显示他们感兴趣的文本。我已经能够通过这段代码突出显示文本:
- (void)markHighlightedString:(id)sender {
// The JS File
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"HighlightedString" ofType:@"js" inDirectory:@""];
NSData *fileData = [NSData dataWithContentsOfFile:filePath];
NSString *jsString = [[NSMutableString alloc] initWithData:fileData encoding:NSUTF8StringEncoding];
[self.bookTextWebView stringByEvaluatingJavaScriptFromString:jsString];
// The JS Function
NSString *startSearch = [NSString stringWithFormat:@"stylizeHighlightedString()"];
[self.bookTextWebView stringByEvaluatingJavaScriptFromString:startSearch];}
stylizeHighlightedString()是:
function stylizeHighlightedString() {
var range = window.getSelection().getRangeAt(0);
var selectionContents = range.extractContents();
var span = document.createElement("span");
span.appendChild(selectionContents);
span.setAttribute("class","uiWebviewHighlight");
span.style.color = "red";
range.insertNode(span);}
现在,我希望在数据库中保留此突出显示的文本信息,以便下次运行应用程序时可以显示以前突出显示的文本。
这可行吗?
答案 0 :(得分:0)
您可以将正在使用的脚本制作成两个脚本。第一个将查询所选范围和return it。你可以解析返回的范围并为它创建一个(Obj-)C对象并存储它。第二个脚本将实际突出显示所提供的范围/范围。为此,您需要通过将范围预先作为javascript变量预先添加到javascript字符串来动态编写javascript。