2013-09-04 4 views

ответ

0

Да, можно выделить слова при работе с pdf.js

Как страница содержит

  • холста (для оказанного контента)
  • в HTMLDivElement (для не- отображаемый текст)

Вы можете использовать последний, чтобы выбрать текстовые элементы.

Имея доступ к 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 вы могли быть в состоянии перейдите к DOM, начиная с s.anchorNode, последовательно позвонив nextSibling, пока не достигнете s.focusNode.

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

Предполагая s.anchorNode не s.focusNode,

  • s.anchorNode не будет выделен от 0 до s.anchorOffset
  • s.focusNode от s.focusOffset до конца узла и
  • всех узлов между ними могут быть выделены полностью

Это работает (или по крайней мере может работать) для текстовых узлов - идея может быть распространена на нетекстовые узлы, окружая каждый нетекстовый узел с помощью выделения.

+0

Интересно, почему это было приостановлено – ingenuine

Смежные вопросы