测试scrollTop

Chrome:

jQuery

$('html,body').scrollTop() //0
$('html').scrollTop() //0
$('body').scrollTop() // Num
$(document).scrollTop() //Num

JS

window.scrollY //Num
document.documentElement.scrollTop //0
document.body.scrollTop //Num

FireFox

jQuery

$('html,body').scrollTop() // Num
$('html').scrollTop() // Num
$('body').scrollTop() //0
$(document).scrollTop() //Num

JS

window.scrollY //Num
document.documentElement.scrollTop //Num
document.body.scrollTop //0

IE8-9

jQuery

$('html,body').scrollTop() //Num
$('html').scrollTop() //Num
$('body').scrollTop() //0

JS

window.scrollY //Null
document.documentElement.scrollTop //Num
document.body.scrollTop //0

综上来看,火狐与IE实现的方式相同,Chrome与之正好相反。
最终实用方法:

var toper = window.scrollY || document.documentElement.scrollTop

jQuery下的$(window).scrollTop()为通用,但是不能使用作为返回顶部的动画元素,会报错。

2016.1.4补充:以下代码在chrome,火狐中测试通过,参考链接

$(window).scrollTop(0)

2016.3.17补充
根据chrome、firefox、ie的测试结果,不同浏览器测试document.documentElement.scrollTop 和 document.body.scrollTop是一对相爱相杀的对手,所以正式利用这一点,兼容各浏览器,计算滚动的高度可用如下方式:

var scrollDistance = document.documentElement.scrollTop + document.body.scrollTop;

参考文章:链接

@2017-05-06 22:28