Подтвердить что ты не робот

IE8 не поддерживает querySelectorAll

Я пытался использовать document.querySelectorAll(), но IE8 выдавал ошибку, что

Объект не поддерживает это свойство или метод

var titleCheckBox = document.querySelectorAll("");

Здесь http://www.quirksmode.org/dom/w3c_core.html#t13 написано, что IE8 поддерживает этот метод. Что я делаю неправильно?

4b9b3361

Ответ 1

Убедитесь, что ваша страница не находится в режиме Quirks или режиме совместимости. Вы можете использовать инструменты F12 dev, чтобы подтвердить это. Нажмите F12 и посмотрите в верхнем правом углу полученного окна. Если вы видите "Совместимость" или "Причуды" в описании режима, то вы обнаружили проблему.

  • Режим Quirks: Обычно это запускается отсутствующим или сломанным Doctype. Если это так, убедитесь, что ваша страница начинается со следующего:

    <!DOCTYPE html>
    
  • Режим совместимости (режим IE7):. Это может быть вызвано, если вы просматриваете страницу локально (т.е. запускаете ее на локальном компьютере, например, для тестирования или в локальной сети). В этом случае вы попадаете в настройку конфигурации IE, которую вы должны отключить. Перейдите в меню "Сервис" и выберите параметр "Параметры доступности для совместимости". Отмените параметры совместимости, и страница должна начать работать.

    Режим совместимости также может запускаться (или избегать) с помощью метатега X-UA-Compatibility. Если у вас проблемы с режимом совместимости, это хороший способ избежать этого: добавьте следующую строку в свой код:

    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    

Либо (или оба) из вышеперечисленного может быть проблемой, но я предполагаю, что проблема заключается в режиме совместимости. Настройки compat-mode-on-intranet-сайтов удивительно малоизвестны и вылавливают много людей, даже некоторых опытных разработчиков.

Ответ 2

IE8 поддерживает только querySelectorAll() в стандартном режиме. Из MSDN:

API Selectors определен как часть спецификации Selectors API и доступен только для веб-страниц, отображаемых в режиме стандартов IE8.

Скорее всего, ваша страница не имеет надлежащей декларации DOCTYPE; вам нужно будет добавить его.