对象在 React 的 IE11 中不支持 属性 或方法 'scrollBy'
Object doesn't support property or method 'scrollBy' in IE11 in React
我正在使用以下代码在 mouseDown 上滚动滚动元素,并在 mouseUp/mouseOut 上停止滚动。
scrubby(xDir) {
let dub = setInterval(() => {
document.getElementById("chart").scrollBy(8 * xDir, 0);
}, 10);
this.setState({ dub: dub });
}
scrubbyStop() {
const { dub } = this.state;
if (dub !== null) {
clearInterval(dub);
}
this.setState({ dub: null });
}
这在除 IE 11 之外的任何地方都有效。在 IE 11 中我收到以下错误:
TypeError: Object doesn't support property or method 'scrollBy'
当我 console.log 元素时, document.getElementById 以确保我正在选择该元素。
我正在使用 babel-polyfil
我看到很多问题与 scrollTo 有关,但与 scrollBy 无关。有谁知道任何可能适用于 IE 的解决方法、polyfill 或替代方案。
Babel polyfill "will emulate a full ES2015+ environment". However, scrollBy
不是 ECMAScript 规范的一部分,因此不会被 Babel 填充。
需要自己添加合适的polyfill,比如smooth scroll behaviour polyfill里面还包含了scrollBy
.
这个问题我迟到了一年多,但是如果其他人遇到这个问题并且想要一个只有填写scrollBy
的解决方案,我'米使用 jQuery:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
...并将其添加到我的页面 JavaScript:
if(!window.scrollBy){
window.scrollBy = function(x, y){
if(x) $('html, body').scrollLeft($(window).scrollLeft() + x);
if(y) $('html, body').scrollTop($(window).scrollTop() + y);
};
}
if(!Element.prototype.scrollBy){
Element.prototype.scrollBy = function(x, y){
if(x) $(this).scrollLeft($(this).scrollLeft() + x);
if(y) $(this).scrollTop($(this).scrollTop() + y);
};
}
它已经在 IE 11 中测试和工作。
我正在使用以下代码在 mouseDown 上滚动滚动元素,并在 mouseUp/mouseOut 上停止滚动。
scrubby(xDir) {
let dub = setInterval(() => {
document.getElementById("chart").scrollBy(8 * xDir, 0);
}, 10);
this.setState({ dub: dub });
}
scrubbyStop() {
const { dub } = this.state;
if (dub !== null) {
clearInterval(dub);
}
this.setState({ dub: null });
}
这在除 IE 11 之外的任何地方都有效。在 IE 11 中我收到以下错误:
TypeError: Object doesn't support property or method 'scrollBy'
当我 console.log 元素时, document.getElementById 以确保我正在选择该元素。
我正在使用 babel-polyfil
我看到很多问题与 scrollTo 有关,但与 scrollBy 无关。有谁知道任何可能适用于 IE 的解决方法、polyfill 或替代方案。
Babel polyfill "will emulate a full ES2015+ environment". However, scrollBy
不是 ECMAScript 规范的一部分,因此不会被 Babel 填充。
需要自己添加合适的polyfill,比如smooth scroll behaviour polyfill里面还包含了scrollBy
.
这个问题我迟到了一年多,但是如果其他人遇到这个问题并且想要一个只有填写scrollBy
的解决方案,我'米使用 jQuery:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
...并将其添加到我的页面 JavaScript:
if(!window.scrollBy){
window.scrollBy = function(x, y){
if(x) $('html, body').scrollLeft($(window).scrollLeft() + x);
if(y) $('html, body').scrollTop($(window).scrollTop() + y);
};
}
if(!Element.prototype.scrollBy){
Element.prototype.scrollBy = function(x, y){
if(x) $(this).scrollLeft($(this).scrollLeft() + x);
if(y) $(this).scrollTop($(this).scrollTop() + y);
};
}
它已经在 IE 11 中测试和工作。