为什么要引入window.scrollY和window.scrollX?

问题描述 投票:0回答:4

据我所知,

pageXOffset/pageYOffset
属性从 Netscape 4 时代就已经可用了。
似乎
scrollX/scrollY
是在 Netscape 6 左右引入的。

替代问题:

Q2。有没有实现scrollX/scrollY但不支持pageXOffset/pageYOffset的浏览器?

我将添加第三个问题,因为没有人能够回答前面的问题:

Q3。最新的CCSOM编辑草案中添加了scrollX/scrollY,而工作草案中只有pageXOffset/pageYOffset,为什么他们保留这两个属性?

javascript dom properties cross-browser cssom
4个回答
7
投票

是否有浏览器实现了scrollY/X但不支持pageY/XOffset

我想你想知道的是你是否可以完全信任

pageY/XOffset
并将
scrollY/X
排除在游戏之外。答案是肯定的。
pageY/XOffset
适用于 Firefox、Chrome、Opera 和 IE 9!

我目前无法在 IE9 上测试

scrollX/Y
,但它未在 MSDN 属性 中列出,因此它很有可能回答您的问题。因此,可能有浏览器实现了
pageY/XOffset
,但没有实现
scrollY/X

为什么要引入window.scrollY和window.scrollX?

由于

scrollY
只是一个别名,我确信这只是为了更好的可读性。


2
投票

有关它的一切。 如您所见,Internet Explorer 8 及更低版本不支持

pageXOffset
。在 IE8(及更低版本)中,您应该使用
scrollLeft
/
scrollTop
document.body
document.documentElement
,具体取决于什么效果(就像在 jQuery 中实现的一样)。

您可以在这里查看:http://jsfiddle.net/8RFAn/1/

而且我不知道为什么要引入

window.scrollX/Y
,对我来说,这些属性在效果和实现的浏览器方面看起来像
pageX/YOffset


0
投票

正如 pepkin88 所说,早期版本的 Internet Explorer 不支持 pageXOffset(以及所有 pageXY 值)。大多数用于定位对象和计算鼠标位置的属性都不属于 W3C 标准的一部分。据我记得所读到的内容,大多数属性都是微软的发明。因此,当您谈到scrollX和scrollY时,您指的是originalpageXYOffset值。当支持 pageXY 属性(不是 Microsoft 模型的一部分)的标准兼容浏览器出现时,他们认为坚持使用 scrollXY 值会太混乱。因此,他们转向了一个更合乎逻辑的(在他们看来)版本:pageOffset。

在我看来,我发现scrollXY 值使用起来更直观。每次我尝试在 screenX、pageX 或 clientX 之间做出决定时,我通常都必须停下来思考。我认为他们可以为每个属性想出更直观的名称。无论如何,它们都不是真正的 W3C 标准,所以我猜约定在 JavaScript 领域并不是那么重要。我很高兴微软发明了它们,因为它们非常有用。

更新:自提出此问题以来,各种属性已被采用为 W3C 标准


-1
投票

我会尝试用我的常识来回答,没有任何官方信息,如果这不是您问题中的意思,那么很抱歉。

window.scrollY 和 window.scrollX 用于决定网站用户垂直或水平滚动的程度。

这非常有用,例如在只能检测文档中某些内容的“绝对”位置并且需要在其顶部/旁边放置其他内容的脚本中,因此使用scrollX和scrollY值可以计算正确的位置。

因此,当对自定义工具提示等动态脚本的需求提出时,负责 JavaScript“框架”的人员响应了号召并引入了这些属性。

就像我说的,不是官方答案,你的谷歌搜索将和我的一样好找到这样的答案。 :)

© www.soinside.com 2019 - 2024. All rights reserved.