#javascript #html #jquery #internet-explorer
#javascript #HTML #jquery #internet-explorer
Вопрос:
Мой код работает в Chrome, Firefox, Safari и Microsoft Edge, но в Internet Explorer я вижу эту ошибку в консоли:
SCRIPT438: объект не поддерживает свойство или метод «совпадения»
Может кто-нибудь помочь?
document.addEventListener('click', function (e) {
var matches = e.target.matches('.open_section_btn');
if (matches) {
getApp(e);
}
}, false);
Комментарии:
1. Какую версию IE вы используете?
matches()
поддерживается вплоть до IE9: developer.mozilla.org/en-US/docs/Web/API/Element/matches . Если вы действительно все еще используете IE8 или ниже, используйте полизаполнение, доступное по этой ссылке. Тогда я настоятельно рекомендую вам сменить браузер.2. @RoryMcCrossan — IE9 имеет только его имя с префиксом,
msMatchesSelector
.3. Хороший момент — я пропустил значок предостережения. Я бы все же предложил использовать полизаполнение вместо нестандартного имени свойства
Ответ №1:
IE не поддерживает matches
, но поддерживает msMatchesSelector
. Страница MDN для matches
перечисляет полизаполнение для использования версий с префиксами, если версии без префиксов недоступны:
if (!Element.prototype.matches) {
Element.prototype.matches = Element.prototype.msMatchesSelector ||
Element.prototype.webkitMatchesSelector;
}
(Если вас беспокоит, что это просто использование присваивания, а не Object.defineProperty
для создания неисчислимого свойства [как у меня было], получается Element.prototype.matches
, что оно перечислимо, так что все в порядке.)
Есть более длинный, но если вам просто нужно поддерживать IE9 и что-нибудь смутно современное, этого достаточно.
Ответ №2:
Если вы используете IE версии 9 или выше, вы можете заставить его работать, используя ms
префикс. Проверьте полный список поддержки здесь