当我使用pdf.js运行pdf时,我希望能够重新设置一些单词(例如高亮)这可能吗?
答案 0 :(得分:2)
是的,可以在使用PDF.js
时突出显示单词由于页面包含
您可以使用后者来选择文本元素。
有权访问浏览器中的Selection API,您可以通过document.getSelection()
进行选择。
以下代码演示了如果所选文本没有(内部)跨越多个HTMLElements,如何执行此操作:
var s = document.getSelection();
var oldstr = s.anchorNode.textContent;
var textBeforeSelection = oldstr.substr(0, s.anchorOffset);
var textInsideSelection = oldstr.substr(s.anchorOffset, s.focusOffset - s.anchorOffset);
var textAfterSelection = oldstr.substr(s.focusOffset, oldstr.length - s.focusOffset);
foo.anchorNode.parentElement.innerHTML
= textBeforeSelection
+ "<span class='highlight'>"
+ textInsideSelection
+ "</span>"
+ textAfterSelection;
对于跨越多个(内部)HTMLElements的选择,您可能能够通过连续调用s.anchorNode
从nextSibling
开始遍历DOM,直到达到{{1} }}
我说可能,因为元素可以按照与视图中不同的顺序放置在文档中。
假设s.focusNode
不是s.anchorNode
,
s.focusNode
将从0突出显示为s.anchorNode
s.anchorOffset
从s.focusNode
到节点结束和这对于文本节点起作用(或者至少可能起作用) - 通过用突出显示跨度围绕每个非文本节点,可以将该想法扩展到非文本节点。