我有一个网络应用程序需要支持 IE11。我使用 ES6+ 对其进行编码并使用 babel-polyfill,因此它将与 IE11 兼容。我的箭头函数、匿名函数和其他 ES6+ 功能在 IE11 中工作没有问题。然而,由于某种原因,element.classList.replace()方法没有得到polyfilled或其他东西,因为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 不填充 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
关于javascript - 使用 babel-polyfill 后,classList.replace() 不再是 IE11 中的方法或属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57612231/