вторник, 26 апреля 2011 г.

Как отлаживать JavaScript в Internet Explorer

Когда писал сообщение про интеграцию blogger c twitter, то столкнулся с проблемой - в IE 8.0 код вёл себя не так, как ожидалось.

В Chrome и FireFox всё было отлично. А вот в Internet Explorer было забавное поведение - при выборе значения из выпадающего списка, он становился пустым.


Учитывая что JavaScript для меня новый язык, то без отладчика никак не обойтись. И поэтому я озадачился - как же мне всё таки перейти в режим отладки.


Я честно сделал две попытки найти такую информацию, но всё приводило к одному - ставь FireFox и FireBug. Это конечно хорошо, если код вообще не работает. Однако когда он не работает именно в IE, то FireBug тут не помощник. 


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


В качестве среды может выступать Microsoft Visual Studio. Кто то скажет что не будет ставить студию, для отладки одного лишь скрипта - но это Ваша проблема и Ваше решение. 


У меня она стоит - так что со средой отладки вопрос решён.  Но вроде как можно поставить отдельно Microsoft Script Debugger.  Но если честно, по моему мнению с IE уже идёт среда для отладки скрипта, которая срабатывает когда происходит ошибка.


Ну да ладно - первым делом надо в реестре изменить/создать ключ. 
HKEY_CURRENT_USER\Software\Microsoft\Windows Script\Settings
В этом разделе необходимо изменить/создать параметр JITDebug. Значение его должно равняться 1. Если будете создавать параметр, то выбирайте тип DWORD (32 бита). Ну а что бы запустить редактор реестра: Меню Пуск, пункт Выполнить. Там вводите regedit.  В Windows 7 в окне поиска можно написать regedit и нажать Enter.


Теперь запускаем Internet Explorer, идём в меню Сервис (Если не видите меню, нажмите Alt), там пункт Свойства обозревателя. В открывшемся окне выбираем закладку Дополнительно и снимаем галочки с двух пунктов: Отключить отладку скриптов (Internet Explorer) и Отключить отладку скриптов (другие).  Пере запускаете Internet Explorer.


Теперь, что бы вызвать отладку, необходимо в коде JavaScripta написать слово debugger.  В результате, когда будет вызван скрипт, то при обнаружении этого слова, Вам будет сделан запрос о запуске среды отладки. 


Для примера в эту страницу добавлен следующий код:
<script type="text/javascript">
  function srcsoftDebugger(){
    debugger    
    i = 0;
    i++;
    i--;
  }
</script>
<div style="cursor: pointer;" onclick="javascript:srcsoftDebugger();">Вызвать отладчик</div> 




Вызвать отладчик

Но учтите - отладчик будет вызван только в IE. 


Что бы сработала эта точка останова в Google Chrome, то сначала нажмите Ctrl+Shift+J - в результате откроется панель отладки - и потом нажимайте на кнопку - отладчик остановиться на этом ключевом слове.


Что бы в FireFox это сделать, установите ForeBug, нажмите F12 - откроется панель FireBug. Обновите страницу и нажмите на кнопку - отладчик остановиться на этом ключевом слове.

Комментариев нет: