JavaScript: Прокрутите до выбора после использования Textarea.setselectionRange в Chrome

Функция JavaScript Выбирает определенное слово в текстуарее, используя .setselectionRange (). В Firefox текстовая пара автоматически прокручивается, чтобы показать выбранный текст. В Chrome (V14) это не так. Есть ли способ заставить Chrome прокрутить текстура до недавно выбранного текста? JQuery Solutions Добро пожаловать.

15
задан hamboy 18 September 2011 в 20:35
поделиться

1 ответ

На основе идеи от @naXa и @Valeriy Katkov, я совершенствовал функцию с меньшей ошибкой. Это должно работать из поля (Это записано с TypeScript. для JavaScript просто удалите тип declariation):

function scrollTo(textarea: HTMLTextAreaElement, offset: number) {
    const txt = textarea.value;
    if (offset >= txt.length || offset < 0)
      return;
    textarea.scrollTop = 0;  // Important, so that scrollHeight will be adjusted
    textarea.value = txt.substring(0, offset);
    const height = textarea.scrollHeight;
    textarea.value = txt;
    textarea.scrollTop = height - 40;  // Margin between selection and top of viewport
}

Использование:

let textarea, start, end;
/* ... */

scrollTo(textarea, start);
textarea.focus();
textarea.setSelectionRange(start, end);
0
ответ дан 1 December 2019 в 03:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: