Etherpad-lite: Курсор возвращается к концу предыдущей строки в Firefox

Созданный на 9 нояб. 2019  ·  19Комментарии  ·  Источник: ether/etherpad-lite

Спасибо за Etherpad. Это очень крутой проект.

Эта проблема очень похожа на # 3087. Он появляется в Firefox 68 в Debian Buster по адресу https://beta.etherpad.org . Это также происходит с последней версией FF и Trisquel 8, форком Ubuntu Xenial. Я замечал эту проблему с Firefox и Etherpad в течение долгого времени (возможно, год), и должен был сообщить об этом раньше. Я не поднимал этот вопрос, так как думал, что это временная ошибка в основной ветке Etherpad. Его нет в Chromium на Debian Buster.

Когда вы пишете длинную строку текста (с пробелами или без них), которая переносится на новую строку, появляется странное поведение. Поместите курсор в начало пустой строки под введенной выше строкой с переносом. Затем нажмите стрелку вверх, чтобы она перешла в начало обернутой части строки (во второй строке обернутого текста). Курсор немедленно переходит в конец предыдущей строки с переносом текста.

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

Ожидаемое поведение - курсор остается в начале строки при поиске там.

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

Спасибо за работу над Etherpad. :)

Bug UX editor

Все 19 Комментарий

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

Та же проблема в Fedora 31 / Firefox 72.0.2.

Я запускаю Etherpad на Docker, проблема возникает как в последней версии, так и в версии 1.8.0.

Удалено сообщение: # 3728, и эта проблема не совсем такая же, даже если, вероятно, связана.

Привет,

Мне пришлось установить несколько экземпляров etherpad (последняя версия, не на докере), но никто не может использовать пады с этой ошибкой.

Представление о том, какая версия / коммит не имеет этой проблемы?

Та же проблема здесь версии 1.8.0 контейнера докеров с Chromium 80.0.3987.122 и Firefox 74, попытался перейти на версию контейнера 1.7.5, но та же проблема.

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

Я тестировал Etherpad на этом коммите: https://github.com/ether/etherpad-lite/commit/467fc11b723723275f1ebd0fed556a0525ea5f0b

А в FF (новый профиль) проблем нет.
Вернулся к последней фиксации (https://github.com/ether/etherpad-lite/commit/826122932380e59c47ce963252cfe16bd46dbc0c), новый профиль FF, возникли проблемы.

Подтверждено в ветке разработки (в настоящее время 826122932380) как в Firefox 74, так и в Chromium 80 .

Когда курсор прыгает, в консоли js появляются ошибки.

  1. Ошибка в консоли JS в Chromium 80 (не особо полезно):

    VM212:5 Uncaught TypeError: Cannot read property 'parentNode' of null
       at ae (eval at v (ciao:2), <anonymous>:5:13128)
       at Q (eval at v (ciao:2), <anonymous>:5:10395)
       at eval (eval at v (ciao:2), <anonymous>:6:15715)
       at d (eval at v (ciao:2), <anonymous>:5:2437)
       at f (eval at v (ciao:2), <anonymous>:5:2918)
       at eval (eval at v (ciao:2), <anonymous>:6:15656)
       at r (eval at v (ciao:2), <anonymous>:5:5987)
    
  2. Ошибка номер один в консоли JS в Firefox 74 :

    TypeError: n is nullciao line 24 > scriptElement line 9 > Function:2033:15
       getLineAndCharForPoint http://localhost:9001/p/ciao line 24 > scriptElement line 9 > Function:2033
       incorporateUserChanges http://localhost:9001/p/ciao line 24 > scriptElement line 9 > Function:1721
       idleWorkTimer http://localhost:9001/p/ciao line 24 > scriptElement line 9 > Function:1213
       inCallStack http://localhost:9001/p/ciao line 24 > scriptElement line 9 > Function:492
       inCallStackIfNecessary http://localhost:9001/p/ciao line 24 > scriptElement line 9 > Function:561
       idleWorkTimer http://localhost:9001/p/ciao line 24 > scriptElement line 9 > Function:1198
       callback http://localhost:9001/p/ciao line 24 > scriptElement line 9 > Function:1149
    

    Что находится на данный момент в этом файле: https://github.com/ether/etherpad-lite/blob/826122932380e59c47ce963252cfe16bd46dbc0c/src/static/js/ace2_inner.js#L2031

  3. Ошибка номер два в консоли JS в Firefox 74 :

Error: Failed assertion: mismatched composition of two changesets ciao line 24 > scriptElement line 9 > Function:5972:11
    error http://localhost:9001/p/ciao line 24 > scriptElement line 9 > Function:5972
    assert http://localhost:9001/p/ciao line 24 > scriptElement line 9 > Function:5986
    compose http://localhost:9001/p/ciao line 24 > scriptElement line 9 > Function:7254
    _mergeChangesets http://localhost:9001/p/ciao line 24 > scriptElement line 9 > Function:9274
    reportEvent http://localhost:9001/p/ciao line 24 > scriptElement line 9 > Function:9308
    submitOldEvent http://localhost:9001/p/ciao line 24 > scriptElement line 9 > Function:450
    inCallStack http://localhost:9001/p/ciao line 24 > scriptElement line 9 > Function:520
    inCallStackIfNecessary http://localhost:9001/p/ciao line 24 > scriptElement line 9 > Function:561
    idleWorkTimer http://localhost:9001/p/ciao line 24 > scriptElement line 9 > Function:1198
    callback http://localhost:9001/p/ciao line 24 > scriptElement line 9 > Function:1149

Это происходит из-за функции обнаружения всех ошибок здесь: https://github.com/ether/etherpad-lite/blob/826122932380e59c47ce963252cfe16bd46dbc0c/src/static/js/Changeset.js#L41

Та же проблема здесь версии 1.8.0 контейнера докеров с Chromium 80.0.3987.122 и Firefox 74, попытался перейти на версию контейнера 1.7.5, но та же проблема.

Хорошо, плохо, он хорошо работает на 1.8.0 и 1.7.5. Очистка кешей браузеров устранила проблему. Таким образом, проблема присутствует только на: latest.

Я могу подтвердить выводы @quenenni : возврат к 467fc11 решает проблему и для меня. Если да, то это вызвано втягиванием # 3622.

Я собираюсь подготовить PR, который отменяет эти две фиксации. _Перед объединением этого я хотел бы, чтобы все вместе тестировали его, чтобы мы могли выявить все оставшиеся проблемы.

@ все в этой теме: не могли бы вы помочь и протестировать № 3729, сообщив о своих выводах?

Если возможно, протестируйте на чистом экземпляре и с пустым кешем браузера.

Во всяком случае, у меня есть сомнения: проблема, которую мы комментируем, если с ноября 2019 года, и изменения, которые будут отменены, были приняты недавно (15 марта 2020 года).

Я не удивлюсь, увидев некоторые оставшиеся проблемы.

3729 решил проблему после очистки кеша браузера.

Спасибо @rottaran. Моя копия тоже работает хорошо.

Однако меня все еще озадачивает тот факт, что @sudoman сообщил об этом в ноябре 2019 года: как отменить более позднее изменение, чтобы исправить его проблему? Должно быть что-то еще.

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

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

Я не могу воспроизвести эту проблему. Он у тебя еще есть?

Моя установка:

  • Etherpad, текущая разработка 840b4a098847, чистая установка без плагинов
  • Firefox 74.0 , чистый кеш

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

Спасибо.

Я обнаружил, что эта проблема возникает даже в Firefox 78 со свежим экземпляром etherpad-lite. Когда вы переходите ко второй строке текста, которая охватывает более одной строки, эта ошибка сначала не появляется. Как только вы нажимаете клавишу со стрелкой для перехода вверх или вниз, эта ошибка начинает влиять на этот абзац текста и продолжает влиять на этот абзац.

В инструментах разработчика Firefox я заметил, что текст в элементе span выражается в одной строке до появления ошибки. После того, как вы переместите курсор во второй раз, текст разделится на несколько строк в DOM. Chromium также имеет такое поведение разделения строк, но не ведет себя ошибочно в этой ситуации.

Я предполагаю, что это может быть ошибка Firefox. Что ты об этом думаешь? Должны ли мы сообщать о восходящем потоке? Кроме того, насколько сложно было бы обойти это, не разделяя строки при перемещении курсора? Спасибо! :)

Следует отметить, что я тестировал Etherpad Lite версии 1.8.4 . Не могли бы вы повторно открыть этот вопрос? Спасибо!

У нас есть отдельная проблема, связанная с вашим поведением. Пожалуйста, обратитесь к этому

Была ли эта страница полезной?
0 / 5 - 0 рейтинги