2008-10-13 1 views
1

У нас есть приложение ASP.NET, и при работе на клиентском сайте они часто получают нулевые ошибки Javascript. Как и во всех этих ошибках, информация IE6 отображается менее полезной. Но проблема в том, что как только я установлю отладчик IE-скрипта и попытаюсь отладить немного больше, ошибка будет невоспроизводимой. Когда отладчик сценариев не установлен, ошибка снова возникает. Существуют ли какие-либо другие инструменты, которые могут быть полезны для отладки javascript на клиентском сайте. Ошибка также не создается с помощью IE7 или Firefox.Самая сложная проблема отладки javascript когда-либо

+1

Возможно, манипулирование DOM перед DOM не полностью загружено (onload или какой-либо эквивалент для обнаружения завершения додела не выполнено)? По моему опыту, это наиболее вероятная причина странных ошибок dom в IE (6 и 7). – jsight

+0

jsight вы должны перенести это на ответ, чтобы я мог его проголосовать. – UnkwnTech

+0

Вместо отладчика сценария IE попробуйте отладчик Visual Studio или Visual Studio Express (http://www.berniecode.com/blog/2007/03/08/how-to-debug-javascript-with-visual-web- разработчик-экспресс /). Возможно, вам повезет больше. – outis

ответ

7

Вы хотя бы знаете, какой объект является нулевым? Вы знаете, что такое линия?

Если нет, вы можете начать с комментария кода, пока проблема не исчезнет. Затем начните возвращать его до тех пор, пока проблема не появится снова.

alert() - твой друг. Try/catch - с предупреждениями об исключениях - может быть и вашим другом.

Загрузка его с помощью firebug в firefox может помочь - даже если на Firefox нет ошибки, firebug может дать вам некоторые полезные данные, особенно если вы можете сузить линию или объект, у которого есть проблема. В том же ключе отладчик IE-скрипта может предоставить вам полезную информацию, даже если ошибка не возникает.

Является ли код запутанным? Возникает ли проблема, когда она не запутывается?

Можете ли вы скопировать источник в локальный файл и играть с кодом без привлечения сервера? Это ускорит эксперименты, которые вы собираетесь делать много.

0

Heisenbugs действительно сосут. Я согласен с jsight, что ошибки, вероятно, вызваны некоторым состоянием гонки; т. е. вы пытаетесь получить доступ к элементам страницы, которые еще не существуют.

+0

Я согласен, что это звучит как состояние гонки. Просто трудно найти. – Craig

0

У вас установлена ​​Visual Studio?

Если это так, включите отладку скриптов в IE, как и для отладчика сценария.

Добавить строку в JavaScript, как ...

debugger; 

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

0

Вы попробовали Firebug Lite? Это дает вам множество возможностей Firebug через bookmarklet. Я не уверен, что это поможет самим сценариям, но это позволит вам просматривать загруженные скрипты и DOM.

Companion.JS также может оказаться полезным, поскольку он дает вам немного лучшую помощь отладке скриптов, чем IE.

2

Проверьте свой код с помощью jslint - IE6 часто путешествует по незначительным синтаксическим ошибкам, которые прощает Firefox.

+2

Каждый ответ на каждый вопрос отладки JavaScript должен начинаться с вышеизложенного. «Если ваш код не проверяется с помощью JSLint, вернитесь, когда он это сделает». –

2

Для тех, кому это важно, я нашел проблему. Это была ошибка в .NET, которая противоречила ASP.NET Ajax. Он был исправлен в .NET 2.0 sp1, который, как оказалось, не был установлен, но как только я установил его, все проблемы ушли.