我正在尝试确定我使用window.scrollY
. 但这在 IE8 中不受支持。什么是安全的跨浏览器替代方案?
IE8 替代 window.scrollY?
IT技术
javascript
html
internet-explorer-8
cross-browser
2021-03-09 08:27:30
6个回答
的跨浏览器兼容版本window.scrollY
是document.documentElement.scrollTop
. 请参阅这篇Mozilla 文档的“注释”部分,了解 IE8 及更早版本中完整、详细的解决方法。
正如这里提到的, pageYOffset
是 window.scrollY 的另一种替代方法(请注意,这仅与 IE9+ 兼容)。
关于上面的链接,请检查示例 4以获取使用document.documentElement.scrollTop
和获取滚动位置的完全兼容的方式(它甚至考虑了@adeneo 提到的缩放!)document.documentElement.scrollLeft
。
如果您不必经常使用它,请执行以下操作:
var scroll = window.scrollY //Modern Way (Chrome, Firefox)
|| document.documentElement.scrollTop (Old IE, 6,7,8)
如果您使用的是 jQuery,我使用 $(window).scrollTop() 来获取 IE 8 中的 Y 位置。它似乎有效。
如果您有正当理由不只是使用库来处理这种基本功能,请不要犹豫“不要重新发明轮子”。
Mootools 是开源的,你可以“窃取”它的实现,相关片段:
getScroll: function(){
var win = this.getWindow(), doc = getCompatElement(this);
return {x: win.pageXOffset || doc.scrollLeft, y: win.pageYOffset || doc.scrollTop};
}
function getCompatElement(element){
var doc = element.getDocument();
return (!doc.compatMode || doc.compatMode == 'CSS1Compat') ? doc.html : doc.body;
}
这两个是决定您当前浏览器具有哪种兼容模式的核心,然后决定是否使用window.pageYOffset
或document.body.scrollTop
基于该模式,甚至是document.html.scrollTop
用于真正古老的有缺陷的浏览器。
根据 Niels 的回答,当只需要 Y 坐标时,我想出了一个稍微紧凑的解决方案:
function get_scroll_y() {
return window.pageYOffset || document.body.scrollTop || document.html.scrollTop;
}