«HTMLDocument» не определен »в IE8

0

Я смотрю вокруг, и везде говорят, что IE8 имеет классы HTMLDocument и Element. К сожалению, когда я пытаюсь получить к нему доступ, все, что я получаю, это:

"'HTMLDocument' is undefined"
"'HTMLElement' is undefined"
"'Element' is undefined"
"'Document' is undefined"

Я подозреваю, что это консольные ошибки, но то же самое происходит, когда я загружаю его из сценария и прототипа, т.е. Array действительно существует.

Может быть, я пытаюсь получить доступ к нему не так? Я использую:

typeof HTMLDocument.prototype.getElementsByClassName != 'function'
  • 0
    Есть ли конкретная причина, почему бы вам не сделать это просто: (typeof document.getElementsByClassName !== 'function') ?
  • 0
    Вы уже проверили, т. Е. 8 находится в режиме Compat?
Показать ещё 2 комментария
Теги:
internet-explorer
internet-explorer-8

3 ответа

1
Лучший ответ

Хорошо, я нашел его. IE устанавливает режим Quirks для страницы, на которой я тестировал ее. К сожалению, я не могу установить режим документа в этом случае, поэтому добавление собственного getElementsByClassName является потерянной причиной...

Для тех, кто может редактировать html-документ, над которым они работают, добавьте этот метатег, чтобы гарантировать, что IE8 будет действовать как IE8:

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

Я не уверен, но может быть, потому что вы в режиме совместимости.

Вы можете сделать что-то вроде:

var elementPrototype = typeof HTMLElement !== "undefined" 
        ? HTMLElement.prototype : Element.prototype;

Но это будет работать для IE7+.

0
var hasClass = function (el, searchClass) {
    return el.className.test(new RegExp('(\\s|^)' + searchClass + '(\\s|$)'));
};

Вы не можете добавлять методы в HTMLElement.prototype в более старых версиях IE.

Вы всегда можете добавить это к объекту Object.prototype но он нахмурился

демонстрация

Ещё вопросы

Сообщество Overcoder
Наверх
Меню