Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
451 views
in Technique[技术] by (71.8m points)

javascript - JavaScript获取窗口X / Y位置以进行滚动(JavaScript get window X/Y position for scroll)

I'm hoping to find a way to get the current viewable window's position (relative to the total page width/height) so I can use it to force a scroll from one section to another.(我希望找到一种方法来获取当前可视窗口的位置(相对于总页面宽度/高度),这样我就可以使用它来强制从一个部分滚动到另一个部分。)

However, there seems to be a tremendous amount of options when it comes to guessing which object holds the true X/Y for your browser.(但是,当猜测哪个对象拥有您浏览器的真实X / Y时,似乎有大量选项。) Which of these do I need to make sure IE 6+, FF 2+, and Chrome/Safari work?(我需要确保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 And are there any others?(还有其他人吗?) Once I know where the window is I can set an event chain that will slowly call window.scrollBy(x,y);(一旦我知道窗口在哪里,我就可以设置一个慢慢调用window.scrollBy(x,y);的事件链window.scrollBy(x,y);) until it reaches my desired point.(直到达到我想要的程度。)   ask by Xeoncross translate from so

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

The method jQuery (v1.10) uses to find this is:(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); That is:(那是:) It tests for window.pageXOffset first and uses that if it exists.(它首先测试window.pageXOffset ,如果它存在则使用它。) Otherwise, it uses document.documentElement.scrollLeft .(否则,它使用document.documentElement.scrollLeft 。) It then subtracts document.documentElement.clientLeft if it exists.(然后它会减去document.documentElement.clientLeft如果存在)。) The subtraction of document.documentElement.clientLeft / Top only appears to be required to correct for situations where you have applied a border (not padding or margin, but actual border) to the root element, and at that, possibly only in certain browsers.(document.documentElement.clientLeft / Top的减法似乎只需要更正你已经将边框(不是填充或边距,但实际边框)应用于根元素的情况,并且可能仅在某些浏览器中应用。)

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...