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



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Если вы заставите свой код следовать правилам jslint.com, он исчезнет. Это также укажет вам, где именно проблема в вашем коде.
Для IE загрузите Отладчик скриптов Microsoft
Проблема в том, что я не получаю это предупреждение / ошибку, когда включаю отладку скрипта (IE + Other), поэтому я тоже не могу поставить точку останова.
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.
Вам нужно будет опубликовать файл CamMenuModify.htm целиком, чтобы мы даже узнали, что вызывает эту ошибку.