Предлагаю отпилить кнопку "вкл/выкл автоматическую прокрутку" и сделать, чтобы это зависело от текущей прокрутки окна чата. То есть, если скролл уже в самом низу, то при добавлении новых сообщений прокручивается, а если человек что-то читает выше (и соответственно прокрутил выше), то автоматом ничего не трогается. Тогда для включения автопрокрутки достаточно будет нажать pagedown/end на окне с сообщениями.
Логика вкратце такова: ПЕРЕД добавлением сообщения (addMessageToChatList) МЕЖДУ вызовами updateChatlistView, записывается текущее состояние скролла в глобальную переменную. Но записывается только один раз, т.е. если мы только-только обновили список сообщений (updateChatlistView). После этого при вызове updateChatlistView после одного (или нескольких) вызовов addMessageToChatList, оно скроллится или не скроллится в зависимости от того, как было раньше, и обнуляет переменную.
Да, а перед этим поменять обработку тэга img на что-то вроде этого, потому как сейчас при попадании любой невалидной картинки в чат, скроллинг начинает нипадецки колбасить как минимум в Chrome (автоматический скроллинг не доезжает до самого низа примерно на 24пх каждый раз, скрывая одну линию текста и мешая нормальной работе автоскроллинга по моему принципу). А так мой вариант должен немедленно удалять картинку, если браузер не смог её загрузить.
ZZYZX А ты уверен, что это не будет баговать? Я просто спрашиваю из принципа "рубильник надежнее". То, что на счет хрома, как ты писал, жуткие косяки такие, конечно, хорошо бы было исправить...
Я так и знал, что все сломает. Через раз при наборе сбщ окно выкидывает в начало чата, исправьте пожалуйста, или верните все как было. П,С, Как говорит мой папаша: Не трогай технику, и она тебя не подведет - яркое тому подтверждение.