SCRIPT438:the 对象不支持 属性 或方法 "matches"

SCRIPT438:the object does not support the property or method "matches"

我的代码在 Chrome、Firefox、Safari 和 Microsoft Edge 中运行,但在 Internet Explorer 上我在控制台中看到此错误:

SCRIPT438:the object does not support the property or method "matches"

有人可以帮忙吗?

document.addEventListener('click', function (e) {
  var matches = e.target.matches('.open_section_btn');
  if (matches) {
    getApp(e);
  }
}, false);

如果您使用的是 IE 版本 9 或更高版本,您可以使用 ms 前缀使其工作。 查看完整的支持列表 here

IE 不支持 matches, but does support msMatchesSelector. The MDN page for matches 如果无前缀版本不可用,列出一个 polyfill 以使用带前缀的版本:

if (!Element.prototype.matches) {
  Element.prototype.matches = Element.prototype.msMatchesSelector ||
                              Element.prototype.webkitMatchesSelector;
}

(如果你觉得这只是使用赋值而不是 Object.defineProperty 来创建不可枚举的 属性 [就像我一样],结果是 Element.prototype.matches 可枚举的,所以没问题。)

还有一个更长的,但如果您只需要支持 IE9+ 和任何现代的东西,就足够了。