javascript - 使用 babel-polyfill 后,classList.replace() 不再是 IE11 中的方法或属性

标签 javascript html polyfills

我有一个网络应用程序需要支持 IE11。我使用 ES6+ 对其进行编码并使用 babel-polyfill,因此它将与 IE11 兼容。我的箭头函数、匿名函数和其他 ES6+ 功能在 IE11 中工作没有问题。然而,由于某种原因,element.classList.replace()方法没有得到polyfilled或其他东西,因为IE11似乎找不到它。

MDN ClassList

所以我想做的是获取 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');
        }

Error

最佳答案

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/

相关文章:

angular - 位置 : sticky polyfill for angular 2

javascript - 使用 C# 在 PhantomJS 中启用 JavaScript

javascript - pubnub 只能在 LAN 上运行吗?

HTML 图像表上的 JavaScript

php - 在 <img> 标签中显示以 # 开头的图像

javascript - 使用 jQuery SlideDown 函数时是否需要始终隐藏元素?

javascript - IE11 的 URL Polyfill

ReactJS:IE 10 兼容性,设置未定义

Javascript $.inArray 不工作

javascript - 如何使用 Aurelia 通过单击内部 anchor 链接来保持在同一页面上?