【发布时间】:2017-05-30 23:05:18
【问题描述】:
我正在做 Epub 阅读器并在 android webview 中显示书籍。
目前我可以使用下面的 javascript 突出显示文本
public static String Highlightscript = " <script language=\"javascript\">" +
"function highlightSelection(){" +
"var userSelection = window.getSelection();" +
"for(var i = 0; i < userSelection.rangeCount; i++)"
+ " highlightRange(userSelection.getRangeAt(i));" +
"}" +
"function highlightRange(range){"+
"span = document.createElement(\"span\");"+
"span.appendChild(range.extractContents());"+
"span.setAttribute(\"style\",\"display:block;background:#ffc570;\");"+
"range.insertNode(span);}"+
"</script> ";
当用户点击突出显示时,我会这样做
webView.loadUrl("javascript:highlightSelection()");
这会突出显示文本,我还将突出显示的文本保存在本地数据库中
但是当用户重新打开这本书时,我想显示以前突出显示的文本。我怎样才能做到这一点?
我试图在用户进入页面时查找文本(默认情况下突出显示文本)
webView.findAllAsync(highlightedText);
但是如果高亮的文字太小,比如单词“The”,很多单词会被高亮。
我已经在 SO 上搜索过,但所有问题都没有得到解答 Question 1 和 Question 2
那么还有其他方法可以实现吗?
【问题讨论】:
标签: javascript android android-webview highlight