на ошибку JavaScript, как определить метод или файл JS с проблемой? - PullRequest
7 голосов
/ 09 июня 2009

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

Javscript может исходить из самого HTML, из файла js или из JSP (и более). У Microsoft есть отладчик сценариев, который очень помогает найти ошибки js, однако иногда, когда возникает ошибка js, отладчик сценариев не может найти часть кода, и, следовательно, его трудно найти, где находится основная причина проблемы.

Мой вопрос заключается в том, знает ли кто-нибудь, как заставить отладчик сценария найти код каким-либо образом (в основном это происходит с кодом js, который находится в файле JSP), или, по крайней мере, включить во всплывающее окно IE метод или файл js, где ошибка произошло. (он отображает только номер строки и много раз ее строку 0 ...).

Спасибо, Tal.

Ответы [ 7 ]

8 голосов
/ 09 июня 2009

Объект ошибки, который создается, когда JavaScript генерирует ошибку, очень ненадежен, когда дело доходит до строки исходного кода, особенно в IE. Браузеры, такие как Firefox и Safari, лучше разбираются в номерах строк, но, как правило, они бессмысленны из-за минимизации файлов.

Очевидно, что более полезным является получение стека вызовов, но из-за анонимной природы функций JavaScript (хорошо, что они могут быть анонимными), стек вызовов часто бывает трудно обработать.

Если вы делаете try/ catch, вы можете сделать arguments.callee, который вернет вам метод, вызвавший текущий метод, который не удался.

Вот хороший пример создания полного стека в JavaScript - http://eriwen.com/javascript/js-stack-trace/

2 голосов
/ 09 июня 2009

Также инструменты разработчика, включенные в Internet Explorer 8 - это что-то хорошее для отслеживания и отладки вашего кода JavaScript

2 голосов
/ 09 июня 2009

Существует версия Firebug под названием Firebug Lite , которая будет работать с Internet Explorer. Его производительность будет зависеть от сложности ваших страниц; однако для относительно легких страниц это должно дать некоторое представление.

Я рекомендую этот инструмент, а не просто используйте Firebug и Firefox , потому что не все ошибки, возникающие в Internet Explorer, будут возникать в Firefox , и поэтому выполнение любой отладки в этом браузере может не дать никаких результатов. *

1 голос
/ 09 июня 2009

Firebug в Firefox обычно считается одним из лучших инструментов отладки.

В Firefox перейдите на

http://getfirebug.com

чтобы получить.

0 голосов
/ 09 июня 2009

Если все остальное терпит неудачу (и когда дело касается IE, иногда это происходит), вы всегда можете просмотреть свой код с предупреждениями. Это грубо и утомительно, но иногда это все, что вы можете сделать: Просто:

var count = 0;

затем посыпать немного:

alert(count++);

на стратегических линиях вдоль вашего кода и отметьте, где он перестает предупреждать.

Повторяйте полоскание до тех пор, пока не получите свою линию.

0 голосов
/ 09 июня 2009

Это напечатает вам трассировку стека:

function Stack() 
{
  try 
     { 
          throw Error() 
     } 
  catch(ex) 
  { 
     return ex.stack 
  } 
};

print( Stack() );
0 голосов
/ 09 июня 2009

Если вы используете Firefox, вы можете нажать Ctrl + Shift + J, чтобы вызвать консоль ошибок JavaScript, встроенную в Firefox, которая точно скажет вам, что произошло.

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