ie 下不能用 window.scrollY

最近的项目做到兼容性处理的环节,还是经验不足,发现有几个滚动相关的效果换在 IE 下面没有响应了。

最终发现是 window.scrollY 这个属性在 IE 下面(我的可是 IE11)是没有的!

然后找 StackOverflow:http://stackoverflow.com/questions/16618785/ie8-alternative-to-window-scrolly

最终的兼容解决方案是,用下面这个代替 window.scrollY

document.documentElement.scrollTop // 替代 window.scrollY
document.documentElement.scrollLeft // 替代 window.scrollX

这样就解决问题了,以后切记,window.scrollYwindow.scrollX 是不能用的!


另外,上面 stackoverflow 上面的问题提到了一个另外的完全兼容解法:

function GetScrollPositions () {
    if ('pageXOffset' in window) {  // all browsers, except IE before version 9
        var scrollLeft =  window.pageXOffset;
        var scrollTop = window.pageYOffset;
    }
    else {      // Internet Explorer before version 9
        var zoomFactor = GetZoomFactor ();
        var scrollLeft = Math.round (document.documentElement.scrollLeft / zoomFactor);
        var scrollTop = Math.round (document.documentElement.scrollTop / zoomFactor);
    }
    alert ("The current horizontal scroll amount: " + scrollLeft + "px");
    alert ("The current vertical scroll amount: " + scrollTop + "px");
}

【转载请附】愿以此功德,回向 >>

原文链接:https://www.huangwenchao.com.cn/2014/12/prevent-window-scrolly.html【ie 下不能用 window.scrollY】

发表评论

电子邮件地址不会被公开。 必填项已用*标注