JavaScript 获取用于滚动的窗口 X/Y 位置

2022-08-30 00:50:00

我希望找到一种方法来获取当前可查看窗口的位置(相对于总页面宽度/高度),以便我可以使用它来强制从一个部分滚动到另一个部分。但是,在猜测哪个对象为您的浏览器拥有真正的X / Y时,似乎有大量的选择。

我需要确保IE 6 +,FF 2 +和Chrome / Safari正常工作?

window.innerWidth
window.innerHeight
window.pageXOffset
window.pageYOffset
document.documentElement.clientWidth
document.documentElement.clientHeight
document.documentElement.scrollLeft
document.documentElement.scrollTop
document.body.clientWidth
document.body.clientHeight
document.body.scrollLeft
document.body.scrollTop

还有其他的吗?一旦我知道窗口在哪里,我就可以设置一个事件链,该事件链将缓慢调用,直到它达到我想要的点。window.scrollBy(x,y);


答案 1

jQuery (v1.10) 用于查找此方法的方法为:

var doc = document.documentElement;
var left = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);
var top = (window.pageYOffset || doc.scrollTop)  - (doc.clientTop || 0);

那是:

  • 它首先进行测试,如果存在,则使用它。window.pageXOffset
  • 否则,它使用 .document.documentElement.scrollLeft
  • 然后,如果它存在,则减去它。document.documentElement.clientLeft

对于已将边框(不是填充或边距,而是实际边框)应用于根元素的情况,并且可能仅在某些浏览器中,似乎只需要对 / 的减法进行更正。document.documentElement.clientLeftTop


答案 2

也许更简单;

var top  = window.pageYOffset || document.documentElement.scrollTop,
    left = window.pageXOffset || document.documentElement.scrollLeft;

学分: so.dom.js#L492