据我所知,
pageXOffset/pageYOffset
属性从 Netscape 4 时代就已经可用了。scrollX/scrollY
是在 Netscape 6 左右引入的。
替代问题:
Q2。有没有实现scrollX/scrollY但不支持pageXOffset/pageYOffset的浏览器?
我将添加第三个问题,因为没有人能够回答前面的问题:
Q3。最新的CCSOM编辑草案中添加了scrollX/scrollY,而工作草案中只有pageXOffset/pageYOffset,为什么他们保留这两个属性?
是否有浏览器实现了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
只是一个别名,我确信这只是为了更好的可读性。
有关它的一切。 如您所见,Internet Explorer 8 及更低版本不支持
pageXOffset
。在 IE8(及更低版本)中,您应该使用 scrollLeft
/ scrollTop
或 document.body
或 document.documentElement
,具体取决于什么效果(就像在 jQuery 中实现的一样)。
您可以在这里查看:http://jsfiddle.net/8RFAn/1/
而且我不知道为什么要引入
window.scrollX/Y
,对我来说,这些属性在效果和实现的浏览器方面看起来像pageX/YOffset
。
正如 pepkin88 所说,早期版本的 Internet Explorer 不支持 pageXOffset(以及所有 pageXY 值)。大多数用于定位对象和计算鼠标位置的属性都不属于 W3C 标准的一部分。据我记得所读到的内容,大多数属性都是微软的发明。因此,当您谈到scrollX和scrollY时,您指的是originalpageXYOffset值。当支持 pageXY 属性(不是 Microsoft 模型的一部分)的标准兼容浏览器出现时,他们认为坚持使用 scrollXY 值会太混乱。因此,他们转向了一个更合乎逻辑的(在他们看来)版本:pageOffset。
在我看来,我发现scrollXY 值使用起来更直观。每次我尝试在 screenX、pageX 或 clientX 之间做出决定时,我通常都必须停下来思考。我认为他们可以为每个属性想出更直观的名称。无论如何,它们都不是真正的 W3C 标准,所以我猜约定在 JavaScript 领域并不是那么重要。我很高兴微软发明了它们,因为它们非常有用。
更新:自提出此问题以来,各种属性已被采用为 W3C 标准
我会尝试用我的常识来回答,没有任何官方信息,如果这不是您问题中的意思,那么很抱歉。
window.scrollY 和 window.scrollX 用于决定网站用户垂直或水平滚动的程度。
这非常有用,例如在只能检测文档中某些内容的“绝对”位置并且需要在其顶部/旁边放置其他内容的脚本中,因此使用scrollX和scrollY值可以计算正确的位置。
因此,当对自定义工具提示等动态脚本的需求提出时,负责 JavaScript“框架”的人员响应了号召并引入了这些属性。
就像我说的,不是官方答案,你的谷歌搜索将和我的一样好找到这样的答案。 :)