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