我有一个需要支持IE11的Web应用程序。我正在使用ES6 +对其进行编码并使用babel-polyfill,因此它将与IE11兼容。我在IE11中可以正常使用箭头功能,匿名功能和其他ES6 +功能。但是,由于某些原因,element.classList.replace()方法不会被填充或填充,因为IE11似乎找不到它。
因此,我想做的是获取html元素列表,循环每个元素,然后用另一个CSS类替换CSS类(非常简单吧?)。嗯,IE11引发以下错误“对象不支持属性或方法'替换'。想法?
Webpack版本:4.32.2,@ babel /核心:7.4.5,@ babel / polyfill:7.4.4
这是我的JS:
var invalidClassElement = document.querySelectorAll("[aria-owns*=".concat(id, "]"))[0].childNodes;
invalidClassElement.forEach(function (node) {
if (node.classList.contains('k-invalid')) {
node.classList.replace('k-invalid', 'k-default');
// The code below works in IE11.
// node.classList.remove('k-invalid');
// node.classList.add('k-default');
}
babel-polyfill不会polyfill classList,并且IE11中对classList的支持是有限的。您需要一个额外的polyfill,因为您提供的指向MDN的链接也表明。
也请参见此现有答案:
Object doesn't support property or method 'replace' on Internet Explorer 11
以及一个相关的core-js问题(由babel-polyfill使用,因此解释了为什么未实现):https://github.com/zloirock/core-js/issues/287