我希望找到一种方法来获取当前可见窗口的位置(相对于总页面宽度/高度),这样我就可以使用它强制从一个部分滚动到另一个部分.然而,在猜测哪个对象持有浏览器的真实X/Y时,似乎有大量的 Select .

要确保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);,直到它到达我想要的点.

推荐答案

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.
  • 如果存在,则减go document.documentElement.clientLeft.

只有在对根元素应用了边框(不是填充或边距,而是实际边框)的情况下,才需要减go document.documentElement.clientLeft/Top,而且可能仅在某些浏览器中.

Javascript相关问答推荐

Snowflake - .toISOString()错误地舍入JS存储过程中的时间戳

如何使用JavaScript对切换的声音设置音量

为什么(1 + Number.Min_UTE)等于1?

将音频记录从js发送到activx-web服务器以保存到磁盘

Vue-Router渲染组件但不更改网址

鼠标移动时更新画布

如何使用CSS和JavaScript创建粘性、凝聚力的形状到形状(容器)变形?

获取加载失败:获取[.]添加时try 将文档添加到Firerestore,Nuxt 3

Vue:ref不会创建react 性属性

vscode扩展-webView Panel按钮不起任何作用

从PWA中的内部存储读取文件

微软Edge编辑和重新发送未显示""

InDesign—创建一个独立的窗口,在文档中进行更正时保持打开状态

使用i18next在React中不重新加载翻译动态数据的问题

在拖放时阻止文件打开

如何避免页面第一次加载时由于CSS样式通过JavaScript更改而出现闪烁

从包含数百行的表中获取更改后的值(以表单形式发送到后端)的正确方法是什么?

如何在ASP.NET JavaScript中使用Google Charts API仅对绘制为负方向的条形图移动堆叠条形图标签位置

使用auth.js保护API路由的Next.JS,FETCH()不起作用

react -原生向量-图标笔划宽度