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+ 和任何现代的东西,就足够了。
我的代码在 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+ 和任何现代的东西,就足够了。