По мере возможности заменяю в своих скриптах код вида
if (document.querySelectorAll)
на код вида
if ("querySelectorAll" in document)
Всё правильно делаю?
Дата рождения: 01.11.1983
Тотальная неудачница и убийца жёстких дисков. Самая большая поклонница Ариэль. Член ордена Вселенского тормоза имени Осаки-сан. Любительница каваййных переднеприводных машинок. Суккуб на полставки. Когти прилагаются.
По мере возможности заменяю в своих скриптах код вида
if (document.querySelectorAll)
на код вида
if ("querySelectorAll" in document)
Всё правильно делаю?
Ну как бы да, но на самом деле пофигу, потому что если там не функция, ты всё равно её не вызовешь (^ ^)
let x = { 'querySelectorAll': false };
if ('querySelectorAll' in x) {
x.querySelectorAll('.foo');
}
Uncaught TypeError: x.querySelectorAll is not a function
Я об этом. А вообще, в данном случае if (document.querySelectorAll) достаточно, потому что либо оно есть (норм), либо его нет (ой). Если там, внезапно, false, то что-то пошло не так и ты в аду, а не браузере, хотя…
// Хотя я просто использую document.querySelectorAll() без проверки. Но у тебя фетиш на старые IE (^ ^)
У меня случилась ситуация, когда мне нужна не функция, а свойство, и оно у старого IE отсутствует, а в другом броузере может возвращать ноль, из-за чего проверка ломалась. Можно было бы по юзерагенту, но тут подоспела другая ситуация, когда IE8 врубал строгий режим, как положено, и свойство у него тоже было, а MSHTA всякие форсили quirks mode, и свойство улетучивалось. А юзерагент одинаковый.