Показать сообщение отдельно
  #29 (permalink)  
Старый 12.09.2022, 14:31
Аватар для Alikberov
Кандидат Javascript-наук
Отправить личное сообщение для Alikberov Посмотреть профиль Найти все сообщения от Alikberov
 
Регистрация: 16.08.2018
Сообщений: 112

Сравнение двух экземпляров одного текста
Сообщение от voraa Посмотреть сообщение
Почему fixed, а не absolute?
Кажeтся там успели побывать все значения. Что было последним, то и осталось (fixed короче absolute в рамках лимита размера поста на данном форуме в 10 тысяч символов), так как особой разницы не заметил.
Сообщение от voraa Посмотреть сообщение
Зачем при каждой обработке события заново создавать dummy? И каждый раз присваивать фиксированные значения (типа 'none', '0px') в style.
В выходные попытался оптимизировать со статическим dummy - всё слетело!
Цитата:
Не эффективнее ли будет создать один dummy один раз, заполнить все фиксированные значения. А в обработчике только задавать значения зависящие от конкретного элемента textarea и присоединять это dummy в DOM, а потом удалять из DOM.
Всё слетело и потребовалось бы писать кругом
Сообщение от voraa Посмотреть сообщение
И каждый раз присваивать фиксированные значения (типа 'none', '0px') в style.
как Вы и предлагаете. А это - излишнее захламление кода в рамках поста на данном форуме.

То есть, я не подчеркнул главного: Здесь представлена усечённая форумная реализация.
Естественно, производительность страдает.
(В полной реализации контейнер div перетаскивается мышью, как полноценное окно, в отладчике ассемблера (тема) и жалкой сотней строчек листинга без переносов.)

Для оптимизации мало dummy сделать постоянным.
Необходимо создать отдельный массив оценки переносов строк, чтобы сравнивать два текста и перевычислять только изменённый фрагмент (не только по onkeypress и selectionStart/End, но и изменении value). Тогда при редактировании текста «Война и Мир» не должно быть зависаний на каждом новом символе…
И расчёт переносов нужно сделать не одним циклом, а генератором для работы в фоновом режиме.
Работы - много!

Здесь возник вопрос, на который поисковики не выдают готовых решений.
Как можно сравнить два текста (аналогично github) и локализовать именно область изменений?
(С такой задачей я ещё не сталкивался…)

P.S.: А что на счёт моих экспериментов с MutationObserver и Object.defineProperty для buddy, caption и status?
На сколько легально так делать в рамках совместимостей?
Ответить с цитированием