Internet Explorer выдает неправильный номер строки для ошибки

У меня есть jsp с большим количеством кода javascript. Всякий раз, когда на странице появляется ошибка javascript, отображаемая в строке состояния браузера IE, номер строки, в которой сообщается об ошибке, не совпадает с номером строки, которая фактически содержит ошибку. Я делаю щелчок правой кнопкой мыши> просмотр исходного кода, чтобы найти указанный номер строки. Но в этой строке нет ошибки. Ошибка, я полагаю, в какой-то другой строчке. Что может быть причиной сообщения ошибочных номеров строк.


person The Machine    schedule 06.01.2010    source источник
comment
Я могу использовать IE только для тестирования своего приложения. Следовательно, firebug не сильно поможет. Кроме того, около месяца назад я получал правильные номера строк, скажем, и не знаю, как вдруг возникло такое расстраивающее несоответствие.   -  person The Machine    schedule 06.01.2010
comment
Помимо замечательных предложений по использованию инструмента IE dev в IE ›8, вы также можете получить Firebug Lite, который работает в любом браузере, поэтому Firebug может действительно помочь :)   -  person Kato    schedule 02.02.2012


Ответы (5)


Как отмечалось в других ответах, IE плохо сообщает номера строк для ошибок. Однако встроенный отладчик (нажмите F12) в IE8 и более поздних версиях гораздо полезнее, поэтому я предлагаю вам попробовать это.

person Tim Down    schedule 06.01.2010
comment
Я согласен. Инструменты - ›Инструменты разработчика - это то, что вам нужно вместо просмотра исходного кода. Кроме того, если вы измените настройки Интернета, чтобы останавливать / запрашивать сообщения об ошибках javascript, обычно появляется вопрос, хотите ли вы отладить? кнопка, которая приведет вас прямо к инструментам разработчика - person Graza; 06.01.2010

Я обнаружил проблему после множества попыток. Надеюсь, это будет полезно некоторым парням, столкнувшимся с этой неприятной проблемой.

RightClick> View Source - это код, который браузер видит для отображения страницы. Однако это еще не все. На странице также могут быть другие HTTP-запросы к файлам css и js. Именно это и происходило в моем случае. Ошибка была в импортированном (НЕ ВКЛЮЧЕНО; если бы он был включен, ошибка была бы в коде) js-файле. И указанный номер строки относился к этому файлу js.

Однако, оглядываясь назад, я считаю, что это правильно, поскольку импортированные файлы хранятся отдельно в кеше браузера, поскольку они являются независимыми HTTP-запросами к веб-серверу. И, следовательно, не должен появляться в RightClick> View Source code.

ПОТЕНЦИАЛЬНАЯ ПРОБЛЕМА: Однако, хотя в моем случае номер строки в отдельном сообщенном js-файле оказался правильным, это не всегда может быть правдой. В большинстве корпоративных приложений js и css es часто уменьшаются, чтобы уменьшить объем памяти в байтах. Следовательно, файл js, который вы, возможно, просматриваете в своей среде IDE, не будет таким, каким его видит браузер. Следовательно, номера строк могут быть другими. Номера строк будут соответствовать сжатой версии файла, которую видит браузер.

ОТЛАДКА JAVASCRIPT IE: Я нашел эту страницу, которая обещает предложить среду отладчика (хотя и не сложную) в среде IE.

http://jonathanboutelle.com/2006/01/16/how-to-debug-javascript-in-internet-explorer/ Я не пробовал, так как у меня не установлен полный пакет Office.

person The Machine    schedule 06.01.2010

Internet Explorer ужасно плохо сообщает номера строк Javascript - обычно указывается номер строки, где начинается тег Javascript <script> в файле HTML, а не номер строки местоположения в файле Javascript. Полагайтесь только на «Сообщение об ошибке», номер строки ничего не стоит в IE.

Используйте другой браузер, например Firefox с установленным расширением Firebug или Google Chrome, в котором он встроен в Web Inspector, что тоже здорово.

person Jimmie Lin    schedule 06.01.2010

Вот хорошая статья

Отладка JavaScript: сообщения об ошибках JavaScript

В частности, номер строки оказывается гораздо менее полезным, чем вы могли ожидать. Браузеры различаются по способу определения номера строки и, таким образом, не могут достоверно сообщить правильный номер строки, в которой произошла ошибка, по отношению к исходному коду. Internet Explorer, например, сообщает номер строки по отношению к внутреннему рендерингу браузера источника документа, который может совпадать, а может и не совпадать с исходным файлом! Firefox сообщает место ошибки более надежно, сообщая файл сценария, в котором произошла ошибка, где это применимо. Однако Firefox не предоставит вам подробную информацию об элементе, вызвавшем ошибку, известном как «вызывающий». Эта информация, которая может быть полезна для быстрого поиска причины ошибки, в настоящее время предоставляется только Internet Explorer.

person rahul    schedule 06.01.2010

Если вы хотите узнать точную причину и место ошибки, а также если вы хотите выполнить обширную отладку javascript, я бы порекомендовал вам использовать FireBug.

person Darin Dimitrov    schedule 06.01.2010
comment
Иногда это невозможно, поскольку в IE часто появляются разные ошибки, чем в FF (особенно те, которые не связаны с синтаксисом). - person Justin Johnson; 06.01.2010