Как воспроизвести: Ошибка сценария, «Объект не поддерживает это свойство или метод»

Может ли кто-нибудь дать мне скрипт (HTML / CSS / Javascript), который может воспроизвести эту ошибку на IE 7.0? Я пытаюсь исправить эту ошибку на своей странице, где я получаю это предупреждение, но не могу точно найти проблему. Номер строки также не совпадает с источником.

Я подумал, что лучше будет создать ошибку, а затем работать над ней постепенно, а не делать какие-то безумные предположения!

Вам нужно будет опубликовать файл CamMenuModify.htm целиком, чтобы мы даже узнали, что вызывает эту ошибку.

George Stocker 21.11.2008 02:07

Это просто пример, который я нашел в Интернете на веб-сайте HP. Исходный код дать не могу.

royalghost 21.11.2008 02:11

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

George Stocker 21.11.2008 02:14

Как я уже сказал, я не могу предоставить исходный код. Похоже, вы также получаете такое же предупреждение на одной из своих страниц, почему бы вам не разместить исходный код?

royalghost 21.11.2008 02:23

Предупреждение на какой странице я?

George Stocker 21.11.2008 03:01
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
4
5
1 295
5

Ответы 5

Если вы заставите свой код следовать правилам jslint.com, он исчезнет. Это также укажет вам, где именно проблема в вашем коде.

Для IE загрузите Отладчик скриптов Microsoft

Проблема в том, что я не получаю это предупреждение / ошибку, когда включаю отладку скрипта (IE + Other), поэтому я тоже не могу поставить точку останова.

royalghost 21.11.2008 02:17

I thought the better approach would be to create a bug and then work on it incrementally rather than making some wild guess!

Вы ошибаетесь. Существует бесчисленное множество сценариев, которые могут вызвать наблюдаемую вами ошибку. Все это означает, что вы пытаетесь вызвать неопределенный метод. Например:

var blah = {};
blah.methodWhichDoesntExist(); // <-- error

Это может быть результатом опечатки, необнаруженного сбоя в каком-либо другом компоненте или гамма-излучения, постоянно меняющего биты в HTML-коде сразу после сохранения. Трудно быть более конкретным, не зная больше о том, что вы делаете.

Как сказал Шог, эта ошибка произойдет, когда вы попытаетесь вызвать метод для объекта, у которого нет этого метода.

Чаще всего это вызвано тем, что объект имеет значение null, когда вы ожидаете, что он не будет нулем.

var myEl = document.getElementById('myElement');
myEl.appendChild(...)

Приведенный выше пример вызовет эту ошибку, если элемент «#myElement» не существует.

Если это происходит только в IE, а не в Firefox, скорее всего, это потому, что вы используете метод, который IE не поддерживает.

Решение? Вы можете попробовать Script Debugger, но я никогда не находил это полезным. Самый надежный, но очень медленный метод - это отладка с помощью alert (). В стратегических точках вашего кода вставьте предупреждение с уникальным сообщением. В какой-то момент IE выдаст ошибку, поэтому вы будете знать, что ошибка находится где-то между последним предупреждением, которое вы видели, и следующим, которое не было.

function myFunc() {
    alert('a');
    var myEl = document.getElementById('myElement');
    myEl.appendChild(something);
    alert('b');
    // more code
}

если вы запустили это и увидели «a», но не «b», вы знаете, что это где-то посередине. Боюсь, это просто печальное состояние javascript в IE.

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

После этого установите точку останова, чтобы код останавливался непосредственно перед ошибочной строкой (F12, чтобы перейти к инструментам отладчика, затем выберите нужный JS-файл из раскрывающегося списка «сценарии» и щелкните слева от номера строки. Нажмите «Начать отладку» 'чтобы использовать точки останова).

Как указывали другие, у этой ошибки может быть много причин, но в моем случае у меня было два идентификатора на одной странице, один из которых был написан с большой буквы, а другой - нет. getElementById () ошибался. Жаловался только IE7.

Другие вопросы по теме