замените:
// Скроллим еще ниже
if(scrollBottom == true){
//alert("Скроллим вниз");
objDiv.scrollTop = objDiv.scrollHeight;
}
на
// Скроллим еще ниже
if(scrollBottom == true){
//alert("Скроллим вниз");
setTimeout(()=>{
objDiv.scrollTop = objDiv.scrollHeight;
},1000);
}
Но это будет ненадежный костыль, по хорошему тут надо все переделать, включая и php/view.php
Не работало как надо потому, что без сеттаймоута вы сразу после замены сообщений в блоке мессаджес пытаетесь проскролить, но браузер в этот момент еще не отработал вставку (тоесть новые сообщения еще не заменили старые и не изменили высоту прокрутки)
соответственно с сеттаймоутом вы даете время браузеру отработать вставку сообщений, и на момент когда вы делаете objDiv.scrollTop = objDiv.scrollHeight; в блоке уже новые сообщения.
с алертом работало по той же причине, алерт не асинхронный, и потому пока висел алерт, код дальше не выполнялся, а начинал выполнятся после закрытия алерта. Таким образом, пока вы тянулись мышкой закрывать алерт, давали браузеру время вставить и отобразить новый блок сообщений.
Вся эта система по сути сейчас работает на багах, я бы советовал задать еще один вопрос о том как правильно сделать данный функционал (как оптимизировать объем передаваемых сообщений и обновление блока с сообщениями)