[英]Unable to update document.body based on scrollY in IE11
我的网站上有以下脚本,旨在当用户从视口顶部滚动超过 20 像素时更改主体类。
(function ($) {
/// Make nav opaque on scroll
window.addEventListener('scroll', function () {
document.body.classList[
window.scrollY > 20 ? 'add': 'remove'
]('scrolled');
});
})(jQuery);
它适用于 Chrome、Safari 和 Firefox,但不适用于 IE11。
我错过了什么?
根据 MDN,IE11 不支持window.scrollY 。 相反,您可以使用window.pageYOffset
,它是window.scrollY
的别名。
正如 MDN 上提到的,
pageYOffset 属性是 scrollY 属性的别名:
window.pageYOffset == window.scrollY; // always true
为了跨浏览器兼容性,请使用 window.pageYOffset 而不是 window.scrollY。 此外,旧版本的 Internet Explorer (< 9) 不支持任一属性,必须通过检查其他非标准属性来解决。 一个完全兼容的例子:
var supportPageOffset = window.pageXOffset !== undefined; var isCSS1Compat = ((document.compatMode || "") === "CSS1Compat"); var x = supportPageOffset ? window.pageXOffset : isCSS1Compat ? document.documentElement.scrollLeft : document.body.scrollLeft; var y = supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop;
在你的情况下,如果你打算支持 IE 11,你可以直接用scrollY
替换pageYOffset
:
document.body.classList[
window.pageYOffset > 20 ? 'add': 'remove'
]('scrolled');
});
这是一个工作小提琴: https : //jsfiddle.net/wg3nj06h/2/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.