当前位置: 首页 > 知识库问答 >
问题:

epub阅读器iOS中的文本突出显示和添加注释功能

方和豫
2023-03-14

我正在为ios和android开发epub阅读器。我想实现文本高亮显示,并将note功能添加到我的epub阅读器中。我想知道如何将这些功能用于固定布局epub。我可以通过javascript:window获取所选对象。getSelection()。我想保存和检索这些对象以备将来使用。下面是我用来突出显示和保存文本的代码:

var selection;
var storedSelections[];

function highlightText() {
if (window.getSelection) {
    selection = window.getSelection();
}
 if (selection.rangeCount > 0) {
    var range = selection.getRangeAt(0);
    var selectedText = range.toString();
    var span = document.createElement("span");
    span.id = "span_" + range.startOffset + "_" + range.endOffset ;
     alert(span.id);
    span.onclick = function() {
    myOnclikFunction(selectedText);};
span.setAttribute("class","uiWebviewHighlight");
    span.style.backgroundColor  = "skyblue";
    range.surroundContents(span);

    selection.removeAllRanges();
    selection.addRange(range);

    for (var i = 0; i < selection.rangeCount; i++) {
        storedSelections.push (selection.getRangeAt (i));
    }
    selection.removeAllRanges();
    localStorage.setItem('storedSelections',storedSelections);
}}

我使用此代码检索突出显示的文本:

function ShowStoredSelections () {
storedSelections.length=0;
var retrieved= localStorage.getItem('storedSelections');
storedSelections.push (retrieved);
var selection = window.getSelection ();
for (var i = 0; i < storedSelections.length; i++) {
    selection.removeAllRanges ();
    selection.addRange (storedSelections[i]);
    if (selection.rangeCount > 0) {
        var range = selection.getRangeAt(0);
        var selectedText = range.toString();

        var span = document.createElement("span");
        span.id = "span_" + range.startOffset + "_" + range.endOffset ;
        span.onclick = function() {
            myOnclikFunction(selectedText);
        };
        span.setAttribute("class","uiWebviewHighlight");
        span.style.backgroundColor  = "red";
        range.surroundContents(span);
        selection.removeAllRanges();
        selection.addRange(range);
    }
}}

我无法将检索到的文本添加到选择中。添加范围。我做错了什么?

请给我一些想法或建议来克服这个问题。

提前感谢任何回复或回答。

共有1个答案

王君墨
2023-03-14

我已经实现了所有这些为Android和iOS的本地epub播放器-其产品R

请按照以下步骤而不是使用getSelect。它很乏味,但功能将完全在您的控制之下

-

注意:最好在运行时将jQuery注入webview,以便将单词包装成跨度

 类似资料:
  • 问题内容: 我可以高亮显示一些文本,使其从一个值开始,然后从另一个值结束,如下所示,但颜色为黄色吗? “” JTextPane 高亮显示 文本“” 谢谢。 问题答案: 通常,有几种可能性,具体取决于您对“突出显示”的真正含义:-) 通过在文档级别更改任意文本部分的样式属性来突出显示,例如 通过textPane级别上的荧光笔突出显示:

  • 我有一个如下的文本区域, 我需要突出显示或选择所有文本“Highlight me”。我没有找到任何方法来突出显示文本区域中的文本。此外,我在JavaFX中找不到任何其他API可以突出显示特定文本或字母的出现,例如Swing中的JTextArea。有人可以建议我如何在文本区域突出显示字符串吗?或者除了JavaFX中的这个文本区域之外,还有其他API可用吗? 我的代码: 预期输出: 线条应以以下任何颜

  • 问题内容: 这更多是一个假设性的问题,我正在为正在计划的项目集思广益,并且很好奇是否有人知道任何API或方法可以在任何窗口上立即获取突出显示的文本,例如从浏览器或文字处理器。它还可能有一个只有在按下时才能读取的键盘命令(类似于CTRL + C,将所选文本添加到剪贴板) 我们将非常感谢您对此有什么API的任何了解。 问题答案: 您可以使用JNA 在前台窗口上实际模拟(复制操作),然后读取剪贴板中的内

  • 本文向大家介绍opencv 基本阅读和图像显示,包括了opencv 基本阅读和图像显示的使用技巧和注意事项,需要的朋友参考一下 示例 要控制屏幕上显示窗口的大小,请在命令之前添加以下命令cv2.imshow: 有关更多详细信息,请参见openCV文档

  • 问题内容: 我正在尝试突出显示与查询匹配的文本,但是我不知道如何使标记显示为HTML而不是文本。 当前输出: Java 脚本 所需的输出: Java 脚本 问题答案: 这是我简单的twoliner辅助方法: 它返回一个跨度,其中所请求的零件以标签突出显示。如果需要,可以简单地将其修改为使用其他标签。 更新: 为避免唯一键丢失警告,这是一个基于跨度并为匹配的零件设置fontWeight样式的解决方案