Реализовать функцию выделения текста в javascript - PullRequest
0 голосов
/ 30 мая 2019

У меня есть задача создать API с помощью ExpressJS, который будет управлять основными моментами, которые будут сделаны на веб-интерфейсе Как я могу отслеживать мой выделенный текст , если кто-то обновляет часть текста?

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

const { textH, allText } = req.body;
let chars = { };
const enclosingChars = (hLighted, theString) => {
  let startingChars = null, endingChars = null;
  const index = theString.indexOf(hLighted);
  const last3 = index + hLighted.length;
  if ((index - 3) > -1) startingChars = theString.substring(index - 3, index);
  if ((index + 3) <= theString.length) endingChars = theString.substring(last3, last3 + 3);
  return { startingChars, endingChars };
};
if (allText.includes(textH)) {
  chars = enclosingChars(textH, allText);
}
chars.hLighted = textH;

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

1 Ответ

0 голосов
/ 31 мая 2019

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

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

, поэтому, если произойдет какой-либо из вышеперечисленных сценариев, индексы будут бесполезны, потому что вы можете ошибиться текстом

Выполните следующие действия

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

   2. keep track of the index range of your text even in case the shift is required (when the text before it is edited)

   3. take a screenshot of the entire article and store it so that when an edit to the article happens you know exactly which part is edited. this will require to check word by word and see if any word in the new text is different from the word of the same index in the old (screenshot). and you can shift the ranges of the highlighted text accordingly.

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

...