Je crée une conversation en utilisant des requêtes ajax dans les rails et j'essaye d'obtenir un div pour faire défiler vers le bas sans beaucoup de chance.
J'emballe tout dans ce div:
#scroll {
height:400px;
overflow:scroll;
}
Y at-il un moyen de le faire défiler vers le bas par défaut en utilisant JS?
Y at-il un moyen de garder le défilement vers le bas après une requête ajax?
Voici ce que j'utilise sur mon site:
var objDiv = document.getElementById("your_div");
objDiv.scrollTop = objDiv.scrollHeight;
C'est beaucoup plus facile si vous utilisez jQuery:
$("#mydiv").scrollTop($("#mydiv")[0].scrollHeight);
en utilisant jQuery animer:
$('#DebugContainer').stop().animate({
scrollTop: $('#DebugContainer')[0].scrollHeight
}, 800);
Vous pouvez utiliser le code suivant:
function scrollToBottom(id){
var div = document.getElementById(id);
div.scrollTop = div.scrollHeight - div.clientHeight;
}
Pour effectuer un lisse faites défiler, utilisez le code suivant (require jQuery):
function scrollSmoothToBottom (id) {
var div = document.getElementById(id);
$('#' + id).animate({
scrollTop: div.scrollHeight - div.clientHeight
}, 500);
}
Voir le échantillon sur JSFiddle
Et c'est comme ça que ça fonctionne:

Ref: scrollTop, scrollHeight, clientHeight
Version jQuery:
var mydiv = $("#scroll");
mydiv.scrollTop(mydiv.prop("scrollHeight"));
Fonctionne à partir de jQuery 1.6
https://api.jquery.com/scrollTop/
http://api.jquery.com/prop/
Nouvelle méthode:
this.scrollIntoView(false);
Si vous ne voulez pas compter sur scrollHeight
, le code suivant aide:
$('#scroll').scrollTop(1000000);