var myDiv = document.getElementById('myDiv');
myDiv.scrollTop = myDiv.scrollHeight;
funciona en Firefox, Safari, Opera, Chrome e incluso Internet Explorer, que es más de lo que puedo decir para la ESS caso de prueba I Configurar ... lol
Le ahorraré la diatriba sobre las soluciones obtusas ofrecidas por otros, y aquí hay un ejemplo de código que podría usarse para un cliente de mensajería instantánea.
document.body.onload = function()
{
var myDiv = document.getElementById('myDiv');
// Pick your poison below, server sent events, websockets, AJAX, etc.
var messageSource = new EventSource('somepage');
messageSource.onmessage = function(event)
{
// You must add border widths, padding and margins to the right.
var isScrolled = myDiv.scrollTop == myDiv.scrollHeight - myDiv.offsetHeight;
myDiv.innerHTML += event.data;
if(isScrolled)
myDiv.scrollTop = myDiv.scrollHeight;
};
};
La parte de ese ejemplo que es controles pertinentes para ver si el div ya se desplaza a la parte inferior, y si es, se desplaza a la parte inferior después de la adición de datos a la misma. Si todavía no se ha desplazado hacia abajo, la posición de desplazamiento del div permanecerá tal que el contenido visible del div no se verá afectado al agregar los datos.
+1 para usar EventSource – Purefan