Есть ли хороший или надежный способ выяснить, где ошибка JavaScript использует только сообщение об ошибке Internet Explorer? - PullRequest
8 голосов
/ 07 октября 2008

Я пишу приложение, которое по разным причинам включает в себя Internet Explorer (IE7, для записи), элементы управления ActiveX и героическое количество JavaScript, которое распространяется по нескольким файлам .js.

Один из наших удаленных тестеров испытывает сообщение об ошибке, а в сообщении об ошибке IE говорится что-то вроде:

Line: 719
Char: 5
Error: Unspecified Error
Code: 0
URL: (the URL of the machine)

Существует только один файл JavaScript, имеющий более 719 строк, а строка 719 - это пустая строка (в данном случае).

Ни один из HTML или других файлов, участвующих в проекте, не имеет 719 или более строк, но итоговый HTML (это что-то вроде включения на стороне сервера), по крайней мере, как показывает IE из «View Source», имеет 719 или более строк - но строка 719 (в данном случае) является тегом строки закрывающей таблицы (другими словами, без JavaScript).

В этом случае результаты «Просмотр сгенерированного источника» составляют всего 310 строк.

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

Итак, учитывая ошибку JavaScript из Internet Explorer , где номер строки является единственной подсказкой , но страница фактически распределена по нескольким файлам?

ОБНОВЛЕНИЕ: Проблема усугубляется тем фактом, что пользователь, испытывающий это, является удаленным и по различным сетевым причинам отлаживает его с помощью чего-то вроде Visual Studio 2008 (кстати, с потрясающей отладкой JavaScript) невозможно. Я ограничен тем, чтобы кто-то из нас посмотрел на источник, чтобы попытаться выяснить, какую строку кода он использует.

ОБНОВЛЕНИЕ 2: Реальный ответ (как принято ниже), кажется, "нет, не совсем". Что бы это ни стоило, Роберт Дж. Уокер немного позаботился о том, чтобы он был одним из тех, кто заставил меня указать правильное направление, поскольку я думаю, что это была оскорбительная линия. Но поскольку это не совсем то, что я бы назвал хорошим или надежным (вина IE, а не Роберта Дж. Уокера), я приму ответ «нет, не совсем». Я не уверен, что это правильный этикет. Пожалуйста, дайте мне знать, если это не через комментарии.

Ответы [ 10 ]

5 голосов
/ 07 октября 2008

Короче. На самом деле, нет. Попробуйте сначала найти ошибку в FF, и если это не удастся, вы можете получить почти такой же хороший отладчик с Visual Web Developer . Отладка IE по большей части отстой.

3 голосов
/ 07 октября 2008

Совет: я обнаружил, что многие номера строк сообщений об ошибках IE отключены на один!

3 голосов
/ 07 октября 2008

Панель инструментов веб-разработчика в IE7 может предоставить вам визуализированный исходный вид.

View > Source > Dom (Page)

Это может быть более точным, если учесть номера строк, предоставленные IE для ошибок скрипта.

3 голосов
/ 07 октября 2008

Лучший способ отладки javascript, который я нашел, - это добавить несколько Response.Write () или предупреждающее сообщение рядом с местом, где, по моему мнению, код нарушился. Запись или предупреждение, которые не отображаются, наиболее близки к проблемной области кода.

Я так и сделал, потому что не нашел более легкого пути.

Обновление: если вы используете этот метод отладки, вы также можете использовать записи / оповещения для содержимого переменных.

2 голосов
/ 07 октября 2008

Нет, нет способа заставить встроенное сообщение об исключении сосать меньше.

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

http://www.berniecode.com/blog/2007/03/08/how-to-debug-javascript-with-visual-web-developer-express/

Следуйте этим инструкциям, и при возникновении ошибки или исключения вам будет показана точная строка в правильном файле. Вы также увидите значение переменных в текущей области и можете настроить «наблюдаемые» элементы, чтобы помочь вам в отладке.

Кроме того, если вам нужна регистрация и проверка CSS Cascade, например Firebug, у меня были хорошие результаты с DebugBar и JSCompanion:

http://www.debugbar.com/ http://www.my -debugbar.com / вики / CompanionJS / HomePage

2 голосов
/ 07 октября 2008

Установив firebug lite на свой сервер для этой страницы:

<script type='text/javascript' 
    src='http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js'>
</script>

вы можете войти на виртуальную консоль,

firebug.d.console.log("stuff and things")
firebug.d.console.dir( {returnedObject:["404", "Object Not Found"]} )

и попросите вашего удаленного тестера получить дополнительную информацию, нажав F12.

Я подозреваю, что есть неопределенная строка, непревзойденные скобки или скобки.

1 голос
/ 07 октября 2008

Мой единственный совет: не используйте IE для такой отладки. Это самый худший из основных браузеров: я пытаюсь использовать Firefox (с Firebug) или Chrome / Safari для решения большинства проблем.

Если вам абсолютно необходимо использовать IE, установите Панель инструментов разработчика IE (которая, похоже, мало помогает при ошибках JavaScript) и / или установите Script Debugger

1 голос
/ 07 октября 2008

Вы проверили, присутствует ли эта ошибка также в Firefox с помощью Firebug? Это был бы мой первый шаг в попытке выяснить, где происходит эта ошибка.

Если его нет в Firefox, я бы включил отладку скриптов в IE.

1 голос
/ 07 октября 2008

Попробуйте Firebug. Я доступен для IE: http://getfirebug.com/lite.html

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