【问题标题】:Why were window.scrollY and window.scrollX introduced?为什么要引入 window.scrollY 和 window.scrollX?
【发布时间】:2011-04-17 00:30:21
【问题描述】:

据我所知,pageXOffset/pageYOffset 属性自 Netscape 4 时代起就已经可用。
似乎scrollX/scrollY 是在 Netscape 6 左右引入的。

替代问题:

第二季度。有没有实现scrollX/scrollY但不支持pageXOffset/pageYOffset的浏览器?

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

第三季度。 CCSOM最新的编辑草稿中添加了scrollX/scrollY,而工作草稿只有pageXOffset/pageYOffset,为什么要保留这两个属性?

【问题讨论】:

  • MDN 声明如下:pageXOffset 属性是 scrollX 属性的别名:window.pageXOffset == window.scrollX; // always true。这没有回答为什么,但至少它表明 Q2 的答案是否定的。

标签: javascript dom properties cross-browser cssom


【解决方案1】:

有没有实现scrollY/X但不支持pageY/XOffset的浏览器

我想你想知道的是你是否可以完全信任pageY/XOffset 并将scrollY/X 排除在游戏之外。答案是肯定的。 pageY/XOffset 在 Firefox、Chrome、Opera 和 IE 9! 中工作

我目前无法在 IE9 上测试 scrollX/Y,但它未在 MSDN properties 上列出,因此它很有可能回答您的问题。所以可能有浏览器实现了pageY/XOffset,但没有实现scrollY/X

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

由于scrollY 只是alias,我相信它只是为了更好的可读性。

【讨论】:

【解决方案2】:

Everything about it. 如您所见,Internet Explorer 8 及更低版本不支持pageXOffset。在 IE8(及更低版本)中,您应该使用 document.bodydocument.bodyscrollLeft / scrollTopdocument.documentElement,具体取决于工作方式(就像在 jQuery 中实现一样)。

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

我不知道为什么要引入window.scrollX/Y,对我来说,这些属性在效果和实现的浏览器方面看起来像pageX/YOffset

【讨论】:

  • 感谢您的努力,但它没有回答我的任何一个问题^^
  • pageXOffset 和 pageYOffset 都是 IE9+
  • @JohnHarding 是的,但在撰写本文时,IE9 还不存在,至少在稳定版本中不存在。
  • @pepkin88 是有道理的,但现在查找此页面的用户可能会感到困惑。
  • @JohnHarding 很公平,我更新了答案以明确显示我所指的版本。
【解决方案3】:

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

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

【讨论】:

  • 我说的是 MSDN 的大部分属性。
【解决方案4】:

我会尽量用我的常识来回答,如果这不是你在问题中的意思,没有什么官方的,所以很抱歉。

window.scrollY 和 window.scrollX 用于决定网站用户垂直或水平滚动了多少。

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

因此,当对自定义工具提示等动态脚本的需求上升时,负责 JavaScript“框架”的人员可能会接听电话并介绍这些属性。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-16
    相关资源
    最近更新 更多