Как воспроизвести: Ошибка сценария, «Объект не поддерживает это свойство или метод». - PullRequest
0 голосов
/ 21 ноября 2008

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

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

Ответы [ 5 ]

2 голосов
/ 21 ноября 2008

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

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

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
}

Если вы запустили это и увидели «а», но не «б», вы знаете, что где-то между ними. Боюсь, это просто печальное состояние JavaScript в IE.

1 голос
/ 21 ноября 2008

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

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

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

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

1 голос
/ 21 ноября 2008

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

0 голосов
/ 16 июня 2011

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

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

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

0 голосов
/ 21 ноября 2008

Для IE загрузите Microsoft Script Debugger

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...