Курсор ведёт себя странно в редакторе — исчезает при движении вверх/вниз

При перемещении курсора вверх/вниз с помощью стрелок он иногда исчезает на полсекунды, заставляя задуматься: где же курсор? Достаточно ли я переместил его вверх/вниз? Нахожусь ли я на нужной строке?

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

Сравните.

Вот как выглядит курсор в Discourse:

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

Сравните с тем, как работает курсор в JSFiddle (в качестве примера):

Обратите внимание: неважно, как быстро я нажимаю стрелку вверх/вниз — курсор всегда виден при перемещении с одной строки на другую. Иными словами, мигание «сбрасывается» при переходе курсора на другую строку.

Надеюсь, два видео чётко объясняют проблему и помогут легко принять решение по её исправлению.

Да, это ошибка в Firefox.

Встречал её на Linux, но на Windows пока не замечал.

См.:

См.: 226301 - text cursor disappears sporadically with css scale down

Но подождите, мое второе видео тоже записано в Firefox, и такой проблемы там нет. Кроме того, я точно знаю шаги воспроизведения: курсор не исчезает «спорадически», как в упомянутом вами отчете. Не связано ли это с тем, что jsfiddle использует собственный механизм отрисовки курсора, тогда как Discourse использует стандартное текстовое поле и поэтому подвержен влиянию стандартного поведения курсора в Firefox?

JSFiddle не использует TEXTAREA, он использует HTML-элемент contenteditable. TEXTAREA не поддерживает такое выделение.

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

1 лайк