Ошибка IE Javascript "объект не поддерживает это свойство или метод" в jQuery
по какой-то причине я получаю следующую ошибку Javascript в Internet Explorer 8 в строке 3156 jquery.js (версия 1.4.3, несжатая версия): Object doesn't support this property or method
. В Firefox и Google Chrome ошибка не возникает.
это строка, на которой происходит ошибка:
if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
следствия (console.log(Expr.leftMatch[type])
) дает следующий интересный результат: в Google Chrome он выводит
/(^(?:.|r|n)*?):((?:[wu00c0-uFFFF-]|.)+)(?:((['"]?)((?:([^)]+)|[^()]*)+)))?(?![^[]*])(?![^(]*))/
однако в Internet Explorer это вывод:
function() {
var p = this;
do p = p.previousSibling;
while (p && p.nodeType != 1);
return p;
}
на котором exec
не может быть вызван (он не определен). Функция quoted отсутствует в jquery.js. Кто-нибудь знает, почему это происходит, или что я могу сделать, чтобы решить эту проблему?
Я, к сожалению, еще не смог создать простой скрипт для воспроизведения проблемы, хотя я нашел этот пост кого-то такая же проблема, но он не предлагает решения (последнее сообщение предполагает, что страница должна быть запущена в Стандартный режим, но мой уже есть).
4 ответов
как оказалось, мне удалось выяснить это самостоятельно после нескольких болезненных часов. Похоже, что механизм селектора Sizzle ломается таким неожиданным образом (и только в Internet Explorer), Если вы определили Object.prototype.previousObject
в другом месте.
удаление этой декларации или переименование previousObject
к чему-то еще исправляет проблему.
самое смешное, что я даже поставил этот код там сам (Object.prototype.previousObject = [the function in my question]
), но я не узнаю код.
Ну, это другой день полный потенциал развития растрачен впустую.
(к сожалению, моя репутация такова, что я не могу прокомментировать непосредственно решение выше)
Я обнаружил, что такое же поведение происходит, если вы пытаетесь добавить метод под названием "унаследованный" к объекту.прототип, то есть Object.prototype.inherited = <some func>
это влияет на IE6, 7 & 8, но, похоже, исправлено в IE9 (beta)
какую версию IE вы используете?
вы случайно не работаете в режиме совместимости? Если вы тестируете в локальном домене, по умолчанию IE устанавливает режим совместимости, и ive испытывал случайные проблемы wierd, подобные этому.
Если вы используете IE 8, вы можете попробовать изменить режим браузера в инструментах разработчика (f12), чтобы увидеть, сохраняется ли проблема.