检测浏览器窗口scrollTop的最佳跨浏览器方法是什么?我不喜欢使用任何预先构建的代码库,因为这是一个非常简单的脚本,并且我不需要所有这些无用的东西。
发布于 2009-05-16 14:32:01
function getScrollTop(){
if(typeof pageYOffset!= 'undefined'){
//most browsers except IE before #9
return pageYOffset;
}
else{
var B= document.body; //IE 'quirks'
var D= document.documentElement; //IE with doctype
D= (D.clientHeight)? D: B;
return D.scrollTop;
}
}
alert(getScrollTop())
发布于 2013-05-16 15:25:32
或者简单地说:
var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
发布于 2009-05-16 02:16:25
如果您不想包含整个JavaScript库,则通常可以从其中提取所需的部分。
例如,这基本上就是如何jQuery implements跨浏览器滚动(顶部|左侧):
function getScroll(method, element) {
// The passed in `method` value should be 'Top' or 'Left'
method = 'scroll' + method;
return (element == window || element == document) ? (
self[(method == 'scrollTop') ? 'pageYOffset' : 'pageXOffset'] ||
(browserSupportsBoxModel && document.documentElement[method]) ||
document.body[method]
) : element[method];
}
getScroll('Top', element);
getScroll('Left', element);
注意:您会注意到上面的代码包含一个未定义的browserSupportsBoxModel
变量。jQuery defines this,方法是向页面临时添加div,然后测量一些属性,以确定浏览器是否正确实现了框模型。正如您可以想象的那样,此标志检查IE。具体地说,它检查IE 6 or 7 in quirks mode。由于检测相当复杂,我将它留给您作为练习;-),假设您已经在代码中的其他地方使用了browser feature detection。
编辑:如果你还没有猜到,我强烈建议你使用一个库来做这些事情。对于健壮和面向未来的代码来说,开销是一个很小的代价,任何人都可以在跨浏览器框架的基础上更有效率。(而不是花无数个小时用你的头撞IE)。
https://stackoverflow.com/questions/871399
复制相似问题