In this case animated scrolling could be a bit confusing since there's already movement (posts sliding upwards and being replaced by the posts from the new page).
There's also scrolling to the bottom when switching to a previous page to worry about, for people who like to read a thread in reverse order (since the bottom is where the new page connects to the page you were previously looking at).
A userscript which mainly improves the moderation tools, but also fixes this (should work fine even for people who aren't moderators): http://userscripts.org/scripts/show/173466
The specific bit of it that improves pagination is https://gist.github.com/jacksonmj/e2a5bbcd5b632f68c85f/26f5f106a6bafc16f0e49c524b10b59490901586#file-tptenhance_gm-user-js-L1134-L1210 , in case anyone feels the need to make a separate userscript for it.
if (document.querySelectorAll)
document.querySelectorAll(".Pagination a").forEach(function(each){
each.addEventListener('click',function(){
window.scrollTo(0,0);
},false);
});
else {
for (var d=document.getElementsByClassName("Pagination"),i=0;i<d.length;i++) {
for (var g=d.getElementsByTagName("a"), j=0; j<g.length;j++) {
g[j].addEventListener('click', function() {
window.scrollTo(0,0);
}
}
}
}
I believe that will only work for the first page change, since .Pagination gets replaced on every page change, which gets rid of event listeners on the buttons. (https://powdertoy.co.uk/Applications/Application.Discussions/Javascript/Thread.js line 87). (jQuery .live() processes events for all elements which match the selector, now and in the future. It's bad practice to use it, and it's deprecated, but I copied the existing pagination function and cba to remove the use of .live().).
Since powdertoy.co.uk already uses jQuery everywhere, it makes sense to use it for this. Admittedly I could just have done:
$(".Pagination a").live('click', function(){window.scrollTo(0,0)});
But I made the scrolling behaviour a bit more complicated (such as the aforementioned scrolling to the bottom when switching to the previous page, and not scrolling if the top or bottom (depending on page change direction) of the posts is already fully in view), and changed the animation a bit so the page doesn't appear to jump around as much when viewing the bottom of the page and .MessageListOuter changes height when posts are added and then later removed. Changing the animation meant I had to completely replace the existing function, instead of just adding another listener.