Как убрать ошибки на веб странице. Ошибка веб страницы выполнить отладку

Есть, конечно, и другие - о них я обязательно упомяну.

Firebug для Firefox

Не знаю точно, является ли FireBug прародителем других средств для разработчиков, но он определенно самый популярный, удобный и функциональный на сегодняшний день в .

Firebug - это дополнение для Firefox, а значит его надо скачать с сайта Firefox add-ons и установить.

Для того, чтобы вызвать файербаг, достаточно нажать F12.

Возможности этого дополнения:

  • Инспектирование и редактирование динамически изменяемого HTML;
  • Редактирование CSS на лету;
  • Отладка JavaScript, командная строка для выполнения скриптов;
  • Мониторинг сетевых запросов - можно увидеть размеры и время загрузки файлов и скриптов, заголовки запросов;
  • Анализатор DOM.

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

Кроме самого firebug’a вам может пригодится полезная примочка к нему - FireCookie , c помощью которой (сюрприз:-) можно просматривать и изменять куки.

WEB Developer Toolbar для Firefox

Еще одно полезное дополнение к Огнелису. Выглядит оно так:

Разберем по пунктам.

Disable

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

Cookies

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

CSS

Это меню хранит самую крутую фичу Developer Toolbar’a - редактирование CSS на лету. Кроме этого есть возможность просматривать css, запрещать и так далее, и тому подобное. На мой взгляд здесь очень полезно наличие быстрых клавиш (CTRL+SHIFT+C, к примеру, позволяет сразу перейти к просмотру стилей страницы)

Forms

Все для работы с формами: показывать пароли, показывать информацию о формах, конвертировать методы форм (GET » POST и наоборот) и многое другое. Полезная функция «Populate Form Fields» для автоматического заполнения полей формы (например, при тестировании сайта, когда функция запоминания паролей в отключена. В остальном не вижу в этом пункте ничего полезного.

Images

Здесь есть полезная функция отключения изображений - чтобы посмотреть как выглядит ваш сайт без картинок. Картинки можно обвести, показать их размеры, показать alt-атрибуты.

Information

В этом меню очень много опций. Может быть полезной функция отображения атрибутов class и id на странице. Кроме этого интересен пункт «View Color Information» - чтобы быстро получить информацию о цветах, которые используются на странице. «View document size» - просмотр размера страницы. «View Response Headers» - просмотреть заголовки страницы.

Miscellaneous

Самая часто используемая функция - очистка кэша. Кроме этого здесь доступны функции «Page ruler» - линейка, «Page Magnifier» - лупа и «Line guides» - несколько линий, которые могут быть полезны чтобы подровнять шаблон.

Outline

Выделение разных элементов страницы - таблиц, заголовков, ссылок, фреймов, блоков. Resize позволяет изменять размер окна браузера под какие-либо стандартные расширения экранов. Tools здесь хранятся фичи для валидации страниц. Как локальных, так и внешних. Удобный и быстрый доступ к валидации HTML, CSS, и прочего. Для валидации HTML можно использовать клавосочетание CTRL+SHIFT+H.

View Source

Просмотр исходного кода. Возможность просмотра в внешнем приложении, просмотр сгенерированного кода.

То, что находится в правом углу мне нравится больше всего. Это быстрый валидатор HTML, CSS и индикатор ошибок JavaScript. Если проблем никаких нету - значок зеленый , а если есть проблемы - красный .

Internet Explorer Developer Toolbar

Начиная с 8.0 debug ошибок встроен уже в этот браузер. Вызывается он легко по клавише F12 . Правда он убогий как программа 90 годов.

Но есть куда круче инструмент для этого браузера, так называемый Internet Explorer Developer Toolbar скачать можно по ссылке.

С виду этот тулбар, конечно, похож на firebug, но, увы, до него еще не дорос. Хотя, с другой стороны в нем есть некоторые возможности, которых нету у файербага. Я бы назвал Internet Explorer Developer Toolbar неким гибридом Firebug’a и FireFox WEB Developer Toolbar’a.

Как и в firebug здесь есть возможность инспектировать элемент простым кликом. Но, если в мы сразу можем увидеть padding’и и margin’ы, то здесь такой возможности нету.

Кроме того Internet Explorer Developer Toolbar не обновляет дерево элементов динамически, как это делает Firebug. То есть, если мы изменим что-нибудь на странице средствами js, с помощью этого тулбара мы ничего не увидим.

Из того, чему можно порадоваться - изменением CSS на лету (легкий способ найти, что хакать:), возможности запретить CSS и изображения, возможность быстро очистить кэш и поиграть с печеньками, быстрый доступ к валидации.

Самое вкусное: здесь есть встроенный color picker, который позволяет получить любой цвет со страницы с помощью пипетки. (для ff есть отдельный плагин ColorZilla).

Debug DebugBar для Internet Explorer

DebugBar для Internet Explorer скачать можно по указанной ссылке.

По своему интересное расширение. Устанавливается как дополнительная панель к браузеру:

Имеется встроенный зачем-то поисковик, пипетка, возможность изменять размер окна и, опять-таки, зачем-то возможность отсылать страницу другу на мыло. Хотя, может быть это и полезно. Но воспользоваться этой возможностью мне не удалось.

Кроме этого имеется инспектор:

Способ испектирования кликом или наведением разработчиков не устроил: они придумали штуку поинтереснее. В DebugBar’e надо перетащить прицел на нужный элемент, чтобы увидеть его в дереве. Возможности редактировать CSS нету. Зато есть валидатор и встроенная консоль js.

А если покопаться в настройках можно найти и такое:

И смешно и грустно.

Известно, что в восьмой эксплорер будет встроен Developer Toolbar. Он будет похож на тот, который описывался в третьем пункте, но надеемся, что будет лучше.

Debug DragonFly для Opera

DragonFly встроен в Оперу, начиная с версии 9.5, поэтому устанавливать не надо. Для того, чтобы активировать Драгонфлай переходим в Инструменты → Дополнительно → Средства для разработчиков. А если по английски, то Tools → Advanced → Developer Tools.

Сразу предупрежу, что DragonFly находится в стадии Alpha2, этим объясняются многие его глюки.

Возможности списком:

  • DOM инспектор;
  • Инспектирование кликом (опять-таки, мы не увидим отступов, как в FireFox);
  • Редактирование ;
  • Быстрый доступ к консоли ошибок.

DF - что-то вроде отдельной страницы во фрэйме. Если вы его открыли, оно будет открыто для всех вкладок (в отличие от firebug’a). Поэтому перед инспектированием элемента надо выбрать из списка страницу, которую мы хотим просмотреть.

К сожалению здесь, как и в Internet Explorer Dav Toolbar не отображаются динамически создаваемые элементы. И вообще, когда мы инспектируем страницу, никакой JavaScript не запускается: ссылки и кнопки не нажимаются. Будем надеяться, что когда DragonFly подойдет к релизу, мы увидим все эти возможности.

Debug WEB Inspector в Safari

Сразу скажу, что про браузер Safari информацию свистнул, поэтому за адекватность материала, как говориться, не отвечаю.

Для того, чтобы включить в меню Сафари пункт «Разработка», необходимо в настройках (закладка «Дополнительно») включить соответствующий пункт:

В меню «Разработка» нам доступны следующие функции:

Давайте рассмотрим в деталях WEB инспектор:

По умолчанию инспектор открывается в режиме просмотра HTML . Но его можно переключить в режим просмотра DOM. Для этого на верхней плашке имеется переключатель. При наведении на элемент в инспекторе, он будет подсвечен на самой странице. Увидеть отступы, изменить разметку или CSS на лету или увидеть динамические изменение в DOMe на лету, как в FireBug нельзя. Зато, согласитесь, выглядит весьма мило.

Если есть желание работать с инспектором в окне браузера, можно нажать на кнопочку в нижнем левом углу.

Еще в сафари доступна такая функция, как «Шкала времени сети», (кнопка «Network» в инспекторе):

Наглядно можно увидеть, когда и как долго грузятся файлы. Также можно просмотреть заголовки запросов, но само содержимое просмотреть, к сожалению, нельзя.

Debug для разработчиков в Google Chrome

Хромой появился на свет в продвинутом виде, и у него сразу имеются, пусть пока что кривые, но все же средства для разработчиков.

  • DOM Inspector;
  • Отладчик javascript;
  • Консоль JavaScript.

Для того, чтобы проинспектировать какой-либо элемент, на него надо нажать правой кнопкой и в контекстном меню выбрать «Просмотр кода элемента»:

Функционал тот же, что и в Сафари: элементы подствечиваются при наведении, но не доступны редактирование CSS и HTML, не отслеживаются изменения в DOM. Вот только, кнопка в левом нижнем углу, которая должна прикреплять инспектора к окну браузера не работает.

В закладке «Resources» мы можем увидеть следующее:

Неможко отличается от шкалы в сафари. Полупрозрачным на этой схеме изображны относительны размеры файлов, а полным цветом - время загрузки. Так или иначе очевидно, что эта часть Хрома еще далеко не доделана.

В этой статье я рассмотрел наиболее известные расширения и встроенные средства для браузеров.

Есть и другие, например:

  • Internet Explorer WEB Development Helper - хороший помощник для ASP.NET разработчиков (Internet Explorer);
  • WEB Developer Toolbar - тулбар для Internet Explorer и FireFox. Есть несколько полезных функций;
  • WEB Accessibility Toolbar - тулбар для Internet Explorer. Ничего интересного.

Если есть дополнения, о которых я не упомянул, а стоило бы, или есть функции у упомянутых расширений, которые я упустил, пишите.

Пользуйтесь на здоровье!

Довольно часто пользователи могут наблюдать ситуацию, когда в браузере Internet Explorer (IE) появляется сообщение об ошибке сценария. Если ситуация носит единичный характер, то не стоит беспокоится, но когда подобные ошибки стают регулярными, то стоит задуматься о характере данной проблемы.

Ошибка сценария в Internet Explorer, как правило, вызывается неправильной обработкой браузером кода HTML-страницы, наличием временных интернет-файлов, параметрами учетной записи, а также многими другими причинами, о которых и пойдет речь в данном материале. Также будет рассмотрено методы решения данной проблемы.

Прежде чем приступить к общепринятым методам диагностики проблем с Internet Explorer, которые вызывают ошибки сценария, необходимо убедиться в том, что ошибка возникает не только на одном конкретном сайте, а сразу на нескольких веб-страницах. Также нужно проверить веб-страницу, на которой возникла данная проблема под другой учетной записью, на другом браузере и на другом компьютере. Это позволит сузить круг поиска причины возникновения ошибки и исключить или подтвердить гипотезу о том, что сообщения появляются как следствие наличия на ПК некоторых файлов или настроек

Блокирование Internet Explorer активных сценариев, ActiveX и Java

Активные сценарии, элементы ActiveX и Java влияют на способ формирования и отображения информации на сайте и могут быть реальной причиной ранее описанной проблемы, если они заблокированы на ПК пользователя. Для того чтобы убедиться, что ошибки сценария возникают именно по этой причине необходимо просто выполнить сброс параметров безопасности браузера. Чтобы это осуществить следуйте следующим рекомендациям.

  • Откройте Internet Explorer 11
  • Сервис

  • В окне перейдите на вкладку Безопасность
  • Далее нажмите кнопку По умолчанию , а потом кнопку ОК

Временные файлы Internet Explorer

Каждый раз при открытии какой-либо веб-страницы, браузер Internet Explorer сохраняет на ПК локальную копию этой интернет-страницы в так называемые временные файлы. Когда таких файлов стает слишком много и размер папки, содержащей их достигает нескольких гигабайт, могут возникнуть проблемы с отображением веб-страницы, а именно появиться сообщение об ошибке сценария. Регулярная очистка папки с временными файлами может помочь устранить данную проблему.
Для удаления временных интернет файлов выполните следующую последовательность действий.

  • Откройте Internet Explorer 11
  • В верхнем углу браузера (справа) нажмите иконку Сервис в виде шестерни (или комбинацию клавиш Alt+X). Затем в открывшимся меню выберите пункт
  • В окне перейдите на вкладку Общие
  • В разделе Журнал браузера нажмите кнопку Удалить…

  • В окне Удаление истории обзора поставьте флажки возле пунктов Временные файлы Интернета и веб-сайтов , Файлы cookie и данные веб-сайтов , Журнал
  • Нажмите кнопку Удалить

Работа антивирусного программного обеспечения

Ошибки сценария возможны через работу антивирусной программы, когда она блокирует активные сценарии, элементы ActiveX и Java на странице или папки для сохранения временных файлов браузера. В таком случае необходимо обратится к документации по установленному антивирусному продукту и отключить сканирование папок для сохранения временных интернет-файлов, а также блокировку интерактивных объектов.

Неправильная обработка кода HTML-страницы

Проявляется, как правило, на одном каком-то конкретном сайте и говорит о том, что код страницы полностью не адаптирован для работы с Internet Explorer. В этом случае, лучше всего отключить отладку скриптов в браузере. Для этого выполните следующие действия.

  • Откройте Internet Explorer 11
  • В верхнем углу браузера (справа) нажмите иконку Сервис в виде шестерни (или комбинацию клавиш Alt+X). Затем в открывшимся меню выберите пункт
  • В окне перейдите на вкладку Дополнительно
  • Далее снимите флажок с пункта Показывать уведомление о каждой ошибке сценария и нажмите кнопку ОК .

Это перечень наиболее частых причин, которые вызывают ошибки сценария в Internet Explorer, поэтому если Вам надоели подобные сообщения, уделите немного внимания и решите проблему раз и навсегда.

Использование средств разработчика F12 для отладки ошибок JavaScript

Это содержимое ссылается на более старую версию средств разработчика F12. Скачайте последнюю версию документации по средствам F12 .

Средства F12 позволяют разработчикам быстро отладить код JavaScript, не выходя из браузера. Встроенные в каждый экземпляр Windows Internet Explorer 9 средства разработчика F12 предоставляют средства отладки, такие как точки останова, просмотр контрольных и локальных переменных, а также консоль для сообщений и немедленное выполнение кода.

В этой статье рассматривается, как использовать средства разработчика F12 для отладки кода JavaScript. Эта статья не является исчерпывающим учебным пособием по отладке, ее цель - выделить инструменты, которые могут помочь разработчику начать работать с созданным кодом. В Internet Explorer 9 нажмите клавишу F12 , чтобы открыть средства разработчика, и щелкните вкладку Сценарий для начала работы.

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

Запуск и остановка отладчика

Когда вы впервые открываете средства разработчика F12 и щелкаете вкладку Сценарий , ваш код появляется в левой части, а консоль в правой. В консоли можно увидеть сообщение: "Обновите страницу, чтобы просмотреть сообщения, полученные до открытия средства разработчика F12. " При обновлении веб-страницы на консоли появятся все ошибки и предупреждения, вызванные браузером.

Чтобы устанавливать точки останова, просматривать контрольные и локальные переменные, а также видеть стек вызовов последовательности функций, нажмите кнопку Начать отладку . Нажатие кнопки Начать отладку обновляет веб-страницу и перезапускает код в отладчике.

Использование консоли для обнаружения синтаксических и других ошибок кода

В большинстве проектов программирования ошибки делятся на синтаксические, логические и ошибки ввода данных. В представлении консоли показываются ошибки и исключения JavaScript, а также исключения модели DOM. Внутри вашего кода вы можете использовать объект консоли для передачи на консоль состояния и сообщений об ошибках программы вместо вызовов "alert()" или доступного пространства на экране. Например, вы можете добавить строку

Window.console.log("The file opened successfully");

В ваш код JavaScript, чтобы получить информацию о состоянии сценария, не прерывая его выполнения. Дополнительные сведения: .

Исправление внешнего вида сценариев

Средства разработчика F12 могут отлаживать JavaScript на уровне строки или оператора независимо от способа отображения кода. Можно пошагово выполнять даже сценарии, сжатые так, что они выглядят большим блоком кода. Но иногда трудно отслеживать логику, когда код является одним блоком.

Для форматирования сценария нажмите кнопку Конфигурация и выберите пункт Форматировать JavaScript . На следующих снимках экрана показан блок кода JavaScript до и после форматирования.



Прерывание выполнения кода

Задание точек останова в средствах разработчика F12 аналогично заданию в отладчиках двоичного кода, таких как Microsoft Visual Studio. В левой области щелкните слева от строки кода, в которой нужно остановиться. Точки останова являются переключаемыми, поэтому щелчок добавляет точку останова, а повторный щелчок удаляет ее.


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

Используя средства разработки F12, можно задать точку останова на уровне оператора, даже если эти операторы находятся в блоке или строке из нескольких операторов. Это позволяет создать точку останова в сжатом сегменте кода. Оптимальным способом задания точки останова в этих условиях является щелчок кода правой кнопкой мыши и выбор в контекстном меню пункта Вставить точку останова . Также можно использовать описанное ранее форматирование сценария (красивая печать), форматируя строки, чтобы упростить их щелчок на полях.

Управление несколькими точками останова с помощью вкладки "Точки останова"

При использовании большого объема кода с большим количеством точек останова или даже состоящего из нескольких файлов можно воспользоваться вкладкой Точки останова , чтобы отследить все нужные точки. На вкладке Сценарий щелкните вкладку Точки останова в свойстве или правой области. См. пример на следующем изображении:

На вкладке Точки останова разработчик может включать или отключать, удалять, выбирать и копировать точки останова без необходимости точно переходить к местонахождениям нужных точек. Чтобы включить или отключить точку останова, установите или снимите флажок рядом с параметром, который нужно изменить. Также можно сразу перейти к точке останова в коде, дважды щелкнув ее в списке. Можно выбрать одновременно несколько точек останова, нажав клавишу CTRL и щелкая нужные точки останова.

На вкладке Точки останова также можно воспользоваться контекстным меню (которое открывается щелчком правой кнопки мыши), позволяющим удалять, включать, отключать или копировать группы точек останова. Эти параметры показаны в следующей таблице.

Пункт меню Действие
Удалить Удаление точки останова без возможности восстановления.
Удалить все Удаление всех точек останова без возможности восстановления.
Включить все Установка всех флажков в списке.
Отключить все Снятие всех флажков в списке.
Условие Позволяет установить условную точку останова для одной точки. Этот пункт недоступен, если выбрано несколько точек останова.
Копировать Копирование текста описаний выбранных точек останова.
Выделить все Выделение всех точек останова в списке.
К исходному коду Переход в левую область кода для отображения выбранной точки останова. Этот пункт недоступен, если выбрано несколько точек останова.
Условные точки останова

Безусловный останов на строке кода полезен, но еще более мощным средством является останов, когда свойство или переменная достигает конкретного значения. Чтобы остановиться при достижении или установке конкретного значения, создайте точку останова, а затем откройте вкладку Точки останова . Щелкните правой кнопкой мыши нужную точку останова и выберите команду Условие .

В диалоговом окне условий добавьте правильный оператор JavaScript. Выполняемый код остановится в этой точке останова, когда результатом оператора будет значение true. Например, на следующем изображении выполнение кода останавливается, когда значение свойства oAudio.paused становится равным false.

Можно задать одно условие или, используя логические операторы, создать более сложное условие останова. Но помните, что область действия переменных и объектов останется той же, что и при их отображении в окне просмотра точки останова. Значение условия, не попадающего в область действия, не будет оцениваться как true.

Пошаговое выполнение кода

Когда выполнение кода останавливается на точке останова, можно воспользоваться кнопками перехода для продолжения выполнения (F5 ), прерывания выполнения (CTRL+SHIFT+B ), пошагового входа в функцию (F11 ), пропуска функции (F10 ) или выхода из функции (SHIFT+F11 ). Когда выполнение остановлено на точке останова или при пошаговом выполнении, окно отладки фактически становится модальным.

Поэтому перед продолжением взаимодействия с веб-страницей нужно остановить отладку (SHIFT+F5 ) или продолжить выполнение (F5 ). Следует вспомнить об этом, если кажется, что веб-страница перестала отвечать. Если, когда открыто несколько окон, окно отладчика не находится сверху, оно может ожидать реакции в точке останова. В этом случае, чтобы вернуть управление веб-страницей, найдите окно отладки для этой веб-страницы и нажмите F5 для продолжения или нажмите SHIFT+F5 для прекращения отладки.

Просмотр переменных с помощью вкладок "Watch" и "Локальные"

Вкладка Watch позволяет определять и просматривать контрольные переменные в отлаживаемом коде. Она содержит имя, значение и тип заданных переменных. Можно щелкнуть строку, помеченную щелкните для добавления... , на вкладке Контрольные значения и ввести имя переменной. Если не хочется вводить имя переменной, можно скопировать и вставить его в список контрольных переменных.

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

В отличие от вкладки Контрольные значения , значения на которой показываются независимо от того, находятся ли соответствующие переменные в области действия, на вкладке Локальные показываются только переменные в текущей области действия. Переменные для просмотра добавлять не нужно, так как при изменении области действия эта вкладка обновляется, отображая все доступные переменные.

Чтобы увидеть разницу, откройте следующий пример в Internet Explorer 9 и выполните указанные действия.

JavaScript debugging example //create a global variable for our var display; function init() { //initialize only after the HTML has been loaded display = document.getElementById("results"); } function firstParam() { //set breakpoint here var a = 5; secondParam(a); } function secondParam(a) { var b = 10; thirdParam(a, b); } function thirdParam(a, b) { var c = 15; var d = a + b + c; //display to console if F12 tools is open if (window.console && window.console.log) { window.console.log(a + " + " + b + " + " + c + " = " + d); } else { display.innerText = a + " + " + b + " + " + c + " = " + d; } }

Run

  • Загрузите пример в Internet Explorer 9.
  • Нажмите клавишу F12 , чтобы открыть средства разработчика F12, и щелкните вкладку Сценарий .
  • В левой области выполните прокрутку до первой функции, щелкните правой кнопкой мыши строку "var a = 5;" и выберите команду Вставить точку останова .
  • Нажмите кнопку Начать отладку , а затем на веб-странице в браузере нажмите кнопку Run (Выполнить).
  • В средствах разработчика F12 щелкните вкладку Контрольные значения на правой стороне и добавьте переменные "a, b, c, и d.".
  • Пошагово выполните код, нажимая клавишу F11 или кнопку Шаг с заходом , и просмотрите переменные на вкладке Контрольные значения .
  • При пошаговом выполнении каждой функции просматриваемые значения должны меняться с неопределенных на некоторые значения.

    Чтобы почувствовать отличия от вкладки Локальные , нажмите клавишу F5 для продолжения из средств разработчика F12. На веб-странице в браузере нажмите кнопку Run (Выполнить), чтобы еще раз выполнить код и вернуться в средства разработчика F12. В правой области вкладки Сценарий щелкните вкладку Локальные и нажмите клавишу F11 , чтобы снова пошагово выполнить функции. Обратите внимание, что список локальных переменных содержит только переменные, имеющие значения. В представлении Локальные также показываются аргументы, передаваемые в функцию, их значение и тип.

    Просмотр стека вызовов

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

    Попробуйте выполнить вышеупомянутый пример и следите за вкладкой Стек вызовов при пошаговом выполнении кода с заходом в функции.


    На вкладке Стек вызовов текущая функция или расположение всегда находится сверху (они указаны стрелкой как на вкладке Стек вызовов , так и на полях кода). При двойном щелчке любой из функций в списке выделяется оператор, вызывающий функцию.

    Отладка нескольких сценариев

    Большие веб-страницы, как правило, используют несколько файлов JavaScript. Средства разработчика F12 позволяют работать с несколькими файлами сценариев, так же как при отладке вашего кода. Для просмотра другого файла щелкните стрелку вниз рядом с кнопкой Начать отладку , чтобы вывести список сценариев, связанных с этой веб-страницей. При использовании средств разработчика F12 пошаговое выполнение кода будет осуществляться по всем файлам. Можно добавить для просмотра переменные из любого файла сценария, а в представлении стека вызовов будет показываться путь выполнения через функции, содержащиеся в различных файлах сценариев.

    Изменение настройки режима документа

    Настройка режима документа с правой стороны строки Меню доступна на каждой вкладке средств разработчика F12, но особенно полезна эта настройка при отладке кода на вкладке Сценарии . Internet Explorer 9 позволяет изменять режим документа, чтобы эмулировать стандарты предыдущих версий Windows Internet Explorer. В Internet Explorer 9 выход из объявления по умолчанию устанавливает для типа документа режим совместимости. При работе с новой возможностью или новым стандартом, например или в HTML5, некоторые ошибки могут выглядеть как ошибки программирования, но в действительности быть вызваны пропущенным или неправильным объявлением doctype.

    Средства разработчика F12 для Internet Explorer 9 не могут исправить ваш код за вас, но несколько облегчают поиск ошибок JavaScript.

    Много существует статей на Хабре, описывающих интересные и сложные аспекты веб-разработки, но много существует читателей, которые, находясь в начале своей карьеры веб-разработчика, хотели бы видеть материал, который позволил бы сделать первый шаг от «PHP за 24 часа» до разработки на серьезном уровне, и я хотел бы поделиться своим опытом в этом деле.

    Особенности веб-приложения делают его разделенным на две части: клиентскую и серверную. На стороне клиента работает код на JavaScript (может быть, где-то можно найти и VBScript, но мы, пожалуй, не будем рассматривать этот случай), на серверной же - много что, в принципе, но мы рассмотрим PHP, наиболее популярный язык для серверной части веб-приложений. Так же интересно было бы поговорить об отладке и профилировании Flash-приложений на клиентской стороне, но затронутая тема и так обширна, так что пока оставим это.

    Так же можно отнести к задачам отладки клиентского кода анализ и валидацию HTML кода. Это, вроде бы, задача не совсем из области программирования, но также немаловажная.

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

    Отладка и профилирование клиентского кода «Классическим» способом отладки кода на JavaScript является использование функции alert и ее производные. Помнится, в начале своей карьеры лично я написал функцию print_r для JavaScript, так как не видел возможности для вывода отладочной информации по массивам и объектам. Выглядело это примерно так:
    function print_r(variable) { if (variable instanceof Array || variable instanceof Object) { var key; for (key in variable) alert(key + " => " + variable); } else { alert(variable); } }

    О каком-либо профилировании речи, конечно, не велось совсем.

    При таком подходе даже информация об объекте console производит революцию.

    Специфика клиентской стороны веб-приложения требует отладки кода во всех популярных браузерах. Конечно, чаще всего хватает и отладки в Internet Explorer"е и любом нормальном другом браузере, но мы рассмотрим все варианты.

    Mozilla Firefox Наверно, именно Firefox можно назвать пионером отладки клиентского кода. Долгое время его указывали как браузер, наиболее подходящий для разработки, а все благодаря расширению Firebug , которое содержит, наверно, все нужные возможности, кроме валидации HTML кода.

    Так же, начиная с версии 4, появилась встроенная Веб-консоль, которая реализует часть функций вкладки «Консоль» и «Сеть» Firebug"а, а так же некоторые возможности по отладке CSS.

    Начиная с версии 6, появился Простой редактор JavaScript, который так же реализует одну из функций Firebug"а, и позволяет писать и выполнять код прямо в браузере.

    Начиная с версии 10 появился Инспектор страниц, который позволяет изучать HTML код и CSS свойства, то есть, реализует функции вкладки «HTML».

    За валидацию HTML кода как правило отвечает расширение Html Validator . Как раз его иконку, указывающую на количество ошибок на главной странице сайта habrahabr.ru, можно видеть в правом нижнем углу браузера на картинке с Инспектором страниц.

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

    Google Chrome и Safari Эти браузеры, основанные на WebKit, обладают встроенным инструментом разработки Web Inspector, который очень хорошо развит и реализует практически те же функции, что и Firebug. При этом, надо отдать ему должное, он не замедляет работы браузера, что водится за «старшим братом».

    В Chrome он может быть вызван по нажатию клавиш Ctrl+Shift+I или просто по F12 . В Safari он хорошо спрятан, и для его использования нужно включить возможности разработки в настройках браузера. Позже инструменты разработчика станут доступными из пункта «Разработка» главного меню или по сочетанию клавиш Ctrl+Alt+I .

    Для валидации HTML кода так же нужно устанавливать сторонние расширения. К примеру, для Chrome, это может быть Validity . Для Safari пока не удалось подобрать ничего подходящего.

    Opera Opera так же имеет встроенный инструмент для разработчиков, который называется «Opera Dragonfly», и может быть вызван в любой момент по сочетанию клавиш Ctrl+Shift+I . Он похож на то, что нам представляет WebKit, и имеет подобные возможности и плюсы, хотя, на мой лично взгляд, менее удобен.

    Отладка и профилирование серверного кодаXdebug Как мы договорились в начале, мы рассматриваем случай, когда на сервере используется PHP. Тут «классическим» методом отладки являются echo , print_r и var_dump , но есть так же и средство для отладки, как в лучших домах - Xdebug . Лично для меня, в связи со спецификой обучения в институте, это выглядело «прямо как в Delphi».

    Расширение xdebug позволяет как минимум прогонять код по шагам и просматривать значения переменных, что поднимает программирование на PHP на новый уровень. О тонкостях работы с xdebug была соответствующая . XDebug обычно доступен в репозиториях GNU/Linux, в Windows его так же не слишком сложно установить, скопировав dll файл.

    При использовании этого расширения, с сервера на компьютер разработчика поступает входящее соединение (по умолчанию на порт 9000), которое он должен обработать. Для этого необходимо соответствующим образом настроить свою IDE.

    Кстати говоря, использование IDE так же является непременным условием движения вперед. Некоторые программисты считают, что разницу между программированием в блокноте с подсветкой кода и в IDE можно увидеть только на крупных проектах, но лично я придерживаюсь мнения, что разница видна даже на программе «Hello world!» - одна автоподстановка имен и аргументов стандартных функций чего стоит.

    XHProfО расширении Да, xdebug предоставляет возможности по профилированию, но разработка Facebook"а для этих целей, XHProf , лично мне больше нравится. Я, сказать честно, не проводил никаких тестов, но считается, что данное расширение гораздо лучше подходит для production-серверов и для профилирования при реальных нагрузках.Установка К сожалению, это расширение не входит ни в какие репозитории. Оно входит в PECL, но по какой-то причине его установка штатным путем часто вызывает проблемы. По этой причине приходится проводить установку из исходников.

    # Получаем исходники wget http://pecl.php.net/get/xhprof-0.9.2.tgz # Распаковываем исходники tar -xvf xhprof-0.9.2.tgz # Переходим в каталог, где содержится код расширения cd xhprof-0.9.2/extension/ # Проводим компиляцию и тест phpize ./configure make make test # Проводим установку цивилизованно checkinstall
    Файл конфигурации xhprof.ini предоставляет нам примерно такие возможности:


    extension=/usr/local/lib/php/extensions/no-debug-non-zts-20090626/xhprof.so
    ; Каталог для логов
    xhprof.output_dir="/var/log/xhprof/"

    Профилирование Каталог, который мы получаем, распаковав архив, содержит помимо исходников расширения так же и веб-интерфейс для изучения результатов профилирования, и библиотеки для профилирования приложения.

    Приведем пример профилирования. В код приложения нужно включить следующие элементы:
    // Начало скрипта, включаем профилирование // как нагрузки на процессор, так и на память xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY); /* * Основной код приложения */ // Конец скрипта, завершаем профилирование, // записываем результат в лог $xhprofData = xhprof_disable(); include_once XHPROF_DIR."/xhprof_lib/utils/xhprof_lib.php"; include_once XHPROF_DIR."/xhprof_lib/utils/xhprof_runs.php"; $xhprofRuns = new XHProfRuns_Default(); $namespace = "some-unique-name"; $runId = $xhprofRuns->save_run($xhprofData, $namespace); echo "\n";
    Здесь константа XHPROF_DIR указывает на каталог, куда мы распаковали скачанный архив.

    Для анализа результатов нужен тот самый веб-интерфейс. Его можно взять в каталоге $XHPROF_DIR/xhprof_html/ - условно обозначим его так. К примеру, мы расположили его в доступном веб-серверу месте, и он доступен по адресу example.com/system/xhprof/ , тогда для анализа результата работы нам нужно обратиться к нему следующим образом:

    Example.com/system/xhprof/?run=%runId%&source=%namespace%

    Мы получим подобный результат:

    Профилирование можно включать в код приложения на постоянной основе или, например, сделать так, чтобы оно запускалось случайно с определенной вероятностью или по наличию определенного условия. Например, так:

    $needProfiler = (mt_rand(0, 100) < 10 or isset($_COOKIE["xhprof"])); if ($needProfiler) xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
    В таком случае можно, имея жалобы от клиентов или подозрения, обратиться к результатам профилирования за определенный временной промежуток. С помощью параметра namespace можно определить, какая именно часть приложения (какой скрипт, контроллер, экшн) профилировались.

    Профилирование SQL запросов Как правило, именно работа с базой данных является узким местом в приложении. По этой причине рекомендуется проводить профилирование запросов. К примеру, рассмотрим часть класса, являющегося оберткой вокруг функций расширения mysql. Да, я знаю, что это расширение не очень любят и желают ему смерти не меньше, чем старому-доброму IE6. Я не призываю его использовать, просто именно такой класс есть у меня под рукой.

    /** * Запрос * @param string $sql Запрос * @param array $params Параметры * @param string $query Скомпилированный запрос * @return array Результат */ public function query($sql, array $params = array(), &$query = "") { $start = microtime(TRUE); // Проведение запроса, включая "защиту" параметров $stop = microtime(TRUE); $time = $stop - $start; $this->_addProfilerData($sql, $time); // Возврат результата } private function _addProfilerData($query, $time) { if (is_array(self::$profilerData)) { self::$profilerData = array("query" => $query, "time" => $time); } } public function __destruct() { if (is_array(self::$profilerData)) { $this->_writeProfilerData(); self::$profilerData = FALSE; } // Отключение от БД } private function _writeProfilerData() { $values = array(); foreach (self::$profilerData as $row) { $query = mysql_real_escape_string($row["query"], $this->con); $time = (float)$row["time"]; $hash = crc32($row["query"]); $values = "($hash, "$query", $time)"; } if ($values) { $strValues = implode(", ", $values); $sql = "INSERT DELAYED INTO `profiler_queries` (`query_hash`, `query`, `work_time`) VALUES $strValues"; @mysql_query($sql, $this->con); } }
    Здесь данные профилирования запросов хранятся в таблице profiler_queries . Эта таблица может иметь тип MyISAM или Archive, так как они предоставляют возможность совершать отложенные вставки, что не создает излишней задержки ответа при профилировании. Так же для лучшего поиска запросов в таблице лучше создать столбец типа INT , куда будет писаться crc32-хеш запроса, по которому нужно создать индекс.

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

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

    Инструкция
  • Если нет видимых трудностей в работе браузера кроме периодически появляющейся ошибки, можно попробовать отключить отладку скриптов, чтобы сообщение больше не появлялось (если ошибка появляется не на одном, а сразу на нескольких сайтах, перейдите к следующему шагу). В меню «Сервис» откройте пункт «Свойства обозревателя», выберите вкладку «Дополнительно» и отметьте флажком «Запретить отладку сценариев». Если вам нужно отключить оповещение обо всех ошибках, снимите флажок для пункта «Показывать уведомление о каждой ошибке сценария».
  • Попробуйте открыть сайт, при просмотре которого возникает ошибка, из другой учетной записи или с другого компьютера, чтобы узнать является ли проблема локальной. Если ошибка появляется, скорее всего, она вызвана неверным кодом веб-страницы. В таком случае можно отключить отладку сценариев, следуя инструкции в предыдущем шаге. Если при просмотре сайта с использованием другого компьютера или учетной записи проблема исчезает, перейдите к следующему шагу.
  • Возможно, браузер Internet Explorer в момент просмотра страниц не блокирует активные сценарии, Java и ActiveX, которые определяют отображение сведений на странице. Чтобы исправить проблему, необходимо сбросить параметры безопасности браузера. Для этого в меню «Сервис» выберите пункт «Свойства обозревателя» и перейдите на вкладку «Безопасность». Нажмите кнопку «По умолчанию», а затем «ОК». Если после повторного запуска страницы, на которой возникала ошибка, проблема остается, попробуйте следующий способ.
  • Как известно, браузер хранит временные файлы и копии страниц в отдельной папке, для последующего к ним обращения. Если размеры папки становятся слишком большими, могут возникнуть ошибки при отображении некоторых страниц. Проблему можно решить, периодически очищая папку с временными файлами. Для этого откройте диалоговое окно «Свойства обозревателя» из меню «Сервис». На вкладке «Общие» в группе «История» нажмите кнопку «Удалить». Установите флажки для пунктов «Временные файлы интернета», «Куки-файлы», «Журнал», «Данные веб-форм» и нажмите «ОК».
  • Есть, конечно, и другие - о них я обязательно упомяну.

    Firebug для Firefox

    Не знаю точно, является ли FireBug прародителем других средств для разработчиков, но он определенно самый популярный, удобный и функциональный на сегодняшний день в.

    Firebug - это дополнение для Firefox, а значит его надо скачать с сайта Firefox add-ons и установить.

    Для того, чтобы вызвать файербаг, достаточно нажать F12.

    Возможности этого дополнения:

    • Инспектирование и редактирование динамически изменяемого HTML;
    • Редактирование CSS на лету;
    • Отладка JavaScript, командная строка для выполнения скриптов;
    • Мониторинг сетевых запросов - можно увидеть размеры и время загрузки файлов и скриптов, заголовки запросов;
    • Анализатор DOM.

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

    Кроме самого firebug’a вам может пригодится полезная примочка к нему - FireCookie , c помощью которой (сюрприз:-) можно просматривать и изменять куки.

    WEB Developer Toolbar для Firefox

    Еще одно полезное дополнение к Огнелису. Выглядит оно так:

    Разберем по пунктам.

    Disable

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

    Cookies

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

    CSS

    Это меню хранит самую крутую фичу Developer Toolbar’a - редактирование CSS на лету. Кроме этого есть возможность просматривать css, запрещать и так далее, и тому подобное. На мой взгляд здесь очень полезно наличие быстрых клавиш (CTRL+SHIFT+C, к примеру, позволяет сразу перейти к просмотру стилей страницы)

    Forms

    Все для работы с формами: показывать пароли, показывать информацию о формах, конвертировать методы форм (GET » POST и наоборот) и многое другое. Полезная функция «Populate Form Fields» для автоматического заполнения полей формы (например, при тестировании сайта, когда функция запоминания паролей в отключена. В остальном не вижу в этом пункте ничего полезного.

    Images

    Здесь есть полезная функция отключения изображений - чтобы посмотреть как выглядит ваш сайт без картинок. Картинки можно обвести, показать их размеры, показать alt-атрибуты.

    Information

    В этом меню очень много опций. Может быть полезной функция отображения атрибутов class и id на странице. Кроме этого интересен пункт «View Color Information» - чтобы быстро получить информацию о цветах, которые используются на странице. «View document size» - просмотр размера страницы. «View Response Headers» - просмотреть заголовки страницы.

    Miscellaneous

    Самая часто используемая функция - очистка кэша. Кроме этого здесь доступны функции «Page ruler» - линейка, «Page Magnifier» - лупа и «Line guides» - несколько линий, которые могут быть полезны чтобы подровнять шаблон.

    Outline

    Выделение разных элементов страницы - таблиц, заголовков, ссылок, фреймов, блоков. Resize позволяет изменять размер окна браузера под какие-либо стандартные расширения экранов. Tools здесь хранятся фичи для валидации страниц. Как локальных, так и внешних. Удобный и быстрый доступ к валидации HTML, CSS, и прочего. Для валидации HTML можно использовать клавосочетание CTRL+SHIFT+H.

    View Source

    Просмотр исходного кода. Возможность просмотра в внешнем приложении, просмотр сгенерированного кода.

    То, что находится в правом углу мне нравится больше всего. Это быстрый валидатор HTML, CSS и индикатор ошибок JavaScript. Если проблем никаких нету - значок зеленый, а если есть проблемы - красный.

    Internet Explorer Developer Toolbar

    Начиная с 8.0 debug ошибок встроен уже в этот браузер. Вызывается он легко по клавише F12 . Правда он убогий как программа 90 годов.

    Но есть куда круче инструмент для этого браузера, так называемый Internet Explorer Developer Toolbar скачать можно по ссылке.

    С виду этот тулбар, конечно, похож на firebug, но, увы, до него еще не дорос. Хотя, с другой стороны в нем есть некоторые возможности, которых нету у файербага. Я бы назвал Internet Explorer Developer Toolbar неким гибридом Firebug’a и FireFox WEB Developer Toolbar’a.

    Как и в firebug здесь есть возможность инспектировать элемент простым кликом. Но, если в мы сразу можем увидеть padding’и и margin’ы, то здесь такой возможности нету.

    Кроме того Internet Explorer Developer Toolbar не обновляет дерево элементов динамически, как это делает Firebug. То есть, если мы изменим что-нибудь на странице средствами js, с помощью этого тулбара мы ничего не увидим.

    Из того, чему можно порадоваться - изменением CSS на лету (легкий способ найти, что хакать:), возможности запретить CSS и изображения, возможность быстро очистить кэш и поиграть с печеньками, быстрый доступ к валидации.

    Самое вкусное: здесь есть встроенный color picker, который позволяет получить любой цвет со страницы с помощью пипетки. (для ff есть отдельный плагин ColorZilla).

    Debug DebugBar для Internet Explorer

    DebugBar для Internet Explorer скачать можно по указанной ссылке.

    По своему интересное расширение. Устанавливается как дополнительная панель к браузеру:

    Имеется встроенный зачем-то поисковик, пипетка, возможность изменять размер окна и, опять-таки, зачем-то возможность отсылать страницу другу на мыло. Хотя, может быть это и полезно. Но воспользоваться этой возможностью мне не удалось.

    Кроме этого имеется инспектор:

    Способ испектирования кликом или наведением разработчиков не устроил: они придумали штуку поинтереснее. В DebugBar’e надо перетащить прицел на нужный элемент, чтобы увидеть его в дереве. Возможности редактировать CSS нету. Зато есть валидатор и встроенная консоль js.

    А если покопаться в настройках можно найти и такое:

    И смешно и грустно.

    Известно, что в восьмой эксплорер будет встроен Developer Toolbar. Он будет похож на тот, который описывался в третьем пункте, но надеемся, что будет лучше.

    Debug DragonFly для Opera

    DragonFly встроен в Оперу, начиная с версии 9.5, поэтому устанавливать не надо. Для того, чтобы активировать Драгонфлай переходим в Инструменты → Дополнительно → Средства для разработчиков. А если по английски, то Tools → Advanced → Developer Tools.

    Сразу предупрежу, что DragonFly находится в стадии Alpha2, этим объясняются многие его глюки.

    Возможности списком:

    • DOM инспектор;
    • Инспектирование кликом (опять-таки, мы не увидим отступов, как в FireFox);
    • Редактирование;
    • Быстрый доступ к консоли ошибок.

    DF - что-то вроде отдельной страницы во фрэйме. Если вы его открыли, оно будет открыто для всех вкладок (в отличие от firebug’a). Поэтому перед инспектированием элемента надо выбрать из списка страницу, которую мы хотим просмотреть.

    К сожалению здесь, как и в Internet Explorer Dav Toolbar не отображаются динамически создаваемые элементы. И вообще, когда мы инспектируем страницу, никакой JavaScript не запускается: ссылки и кнопки не нажимаются. Будем надеяться, что когда DragonFly подойдет к релизу, мы увидим все эти возможности.

    Debug WEB Inspector в Safari

    Сразу скажу, что про браузер Safari информацию свистнул, поэтому за адекватность материала, как говориться, не отвечаю.

    Для того, чтобы включить в меню Сафари пункт «Разработка», необходимо в настройках (закладка «Дополнительно») включить соответствующий пункт:

    В меню «Разработка» нам доступны следующие функции:

    Давайте рассмотрим в деталях WEB инспектор:

    По умолчанию инспектор открывается в режиме просмотра HTML . Но его можно переключить в режим просмотра DOM. Для этого на верхней плашке имеется переключатель. При наведении на элемент в инспекторе, он будет подсвечен на самой странице. Увидеть отступы, изменить разметку или CSS на лету или увидеть динамические изменение в DOMe на лету, как в FireBug нельзя. Зато, согласитесь, выглядит весьма мило.

    Если есть желание работать с инспектором в окне браузера, можно нажать на кнопочку в нижнем левом углу.

    Еще в сафари доступна такая функция, как «Шкала времени сети», (кнопка «Network» в инспекторе):

    Наглядно можно увидеть, когда и как долго грузятся файлы. Также можно просмотреть заголовки запросов, но само содержимое просмотреть, к сожалению, нельзя.

    Debug для разработчиков в Google Chrome

    Хромой появился на свет в продвинутом виде, и у него сразу имеются, пусть пока что кривые, но все же средства для разработчиков.

    • DOM Inspector;
    • Отладчик javascript;
    • Консоль JavaScript.

    Для того, чтобы проинспектировать какой-либо элемент, на него надо нажать правой кнопкой и в контекстном меню выбрать «Просмотр кода элемента»:

    Функционал тот же, что и в Сафари: элементы подствечиваются при наведении, но не доступны редактирование CSS и HTML, не отслеживаются изменения в DOM. Вот только, кнопка в левом нижнем углу, которая должна прикреплять инспектора к окну браузера не работает.

    В закладке «Resources» мы можем увидеть следующее:

    Неможко отличается от шкалы в сафари. Полупрозрачным на этой схеме изображны относительны размеры файлов, а полным цветом - время загрузки. Так или иначе очевидно, что эта часть Хрома еще далеко не доделана.

    В этой статье я рассмотрел наиболее известные расширения и встроенные средства для браузеров.

    Есть и другие, например:

    • Internet Explorer WEB Development Helper - хороший помощник для ASP.NET разработчиков (Internet Explorer);
    • WEB Developer Toolbar - тулбар для Internet Explorer и FireFox. Есть несколько полезных функций;
    • WEB Accessibility Toolbar - тулбар для Internet Explorer. Ничего интересного.

    Если есть дополнения, о которых я не упомянул, а стоило бы, или есть функции у упомянутых расширений, которые я упустил, пишите.

    Пользуйтесь на здоровье!

    Написать HTML - здорово, но как понять, где ошибка, когда что-то не работает? В этой статье описаны несколько инструментов, которые помогают искать и исправлять ошибки в HTML.

    Отладка - это не страшно

    Во время написания какого-нибудь кода, обычно все идет хорошо, пока не появляется тот момент, когда вы совершаете ошибку. Итак, ваш код не работает, или работает не так, как вы задумывали. Если вы попытаетесь скомпилировать неработающую программу на языке Rust , компилятор укажет на ошибку:

    В данном случае, сообщение об ошибке понять относительно просто - "unterminated double quote string". Если вы внимательно посмотрите на println!(Hello, world!"); , то заметите, что здесь отсутсвует двойная кавычка. Разумеется, сообщения об ошибках могут становиться куда более сложными для понимания по мере роста вашего кода, и даже самые простые случаи могут показаться пугающими для тех, кто ничего не знает о Rust.

    Но не бойтесь отладки! Чтобы комфортно писать и отлаживать любой код, нужно понимать язык и его инструменты.

    HTML и отладка

    HTML не так сложен к пониманию, как Rust. HTML не компилируется в какую-либо другую форму перед тем, как браузер проанализирует это и покажет результат (он является интерпретируемым, а не компилируемым). Синтаксис HTML элементов намного понятнее, чем у "настоящих языков программирования", таких как Rust, JavaScript , или Python . Способ, которым браузеры читают HTML более толерантен , чем у языков программирования, интерпретирующих свой код строже. Это одновременно и плохо, и хорошо.

    Толерантный код

    Так что же означает толерантный? В общих чертах, когда вы напортачили в коде, есть два типа ошибок, с которыми вы столкнетесь:

    • Синтаксические ошибки (Syntax errors) : Это ошибки в правильности написания, как это было выше, в примере с Rust. Такие обычно легко исправлять, в той мере, в какой вы знакомы с синтаксисом языка и знаете, что означают сообщения об ошибках.
    • Логические ошибки (Logic errors) : Это ошибки, появляющиеся в том случае, если синтаксис корректен, но код не выполняет своего предназначения, то есть программа выполняется неверно. Такие исправлять сложнее, чем синтаксические, поскольку не выводится сообщений, указывающих место, где вы ошиблись.

    HTML не страдает от синтаксических ошибок, потому что браузер читает код толерантно, в том смысле, что страницы могут отображаться даже если синтаксические ошибки присутсвуют. Браузеры имеют встроенные правила по интерпретации неверно написанной разметки, и вы можете запустить что-либо, даже если вы имели в виду другое. Это может стать настоящей проблемой!

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

    Активное обучение: Знакомство с толерантным кодом

    Время изучить природу толерантного кода в HTML.


    Валидация HTML

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

    Лучше всего проверить страницу в сервисе валидации разметки. Его создал и поддерживает W3C - организация, которая занимается спецификациями HTML, CSS и других веб-технологий. Сервис проверит ваш HTML и составит отчет по ошибкам в нем.

    HTML можно проверить по адресу, загрузив файл или просто скоприовав на страницу.

    Активное обучение: Валидируем HTML-документ
  • Откройте сервис валидации разметки в браузере.
  • Перейдите в режим Validate by Direct Input .
  • Скопируйте весь код документа (не только body) и вставьте в место для ввода.
  • Нажмите на Check (проверить) .
  • Вы увидите список ошибок и другую информацию.

    Работа с сообщениями об ошибках

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

    • "End tag li implied, but there were open elements" (2 instances): Нет явного закрывающего тега, хотя браузер догадывается, где он должен быть. Сообщение указывает на строку после той, на которой ожидался закрывающий тег, но вы найдете нужное место.
    • "Unclosed element strong ": Это очень простая ошибка - элемент) указывает на то, что его содержание имеет большое значение, серьезность или срочность. Браузеры обычно отображают содержимое жирным шрифтом."> не закрыт, и сообщение указывает прямо на открывающий тег.
    • "End tag strong violates nesting rules": Элемент неправильно вложен - на этом уровне нет парного открывающего тега.
    • "End of file reached when inside an attribute value. Ignoring tag": Загадочное сообщение. Дело в том, что где-то (скорее всего, в конце документа) неправильно прописано свойство элемента, и конец файла оказался внутри этого свойства. В браузере не видно ссылки - скорее всего, проблема рядом с ней.
    • "End of file seen and there were open elements": Файл закончился, но некоторые элементы не закрыты. Сообщение указывает на конец файла, в данном случае не закрыт элемент example: link to Mozilla homepage ↩
    ↩ ↩

    Довольно часто пользователи могут наблюдать ситуацию, когда в браузере (IE) появляется сообщение об ошибке сценария. Если ситуация носит единичный характер, то не стоит беспокоится, но когда подобные ошибки стают регулярными, то стоит задуматься о характере данной проблемы.

    Ошибка сценария в Internet Explorer, как правило, вызывается неправильной обработкой браузером кода HTML-страницы, наличием временных интернет-файлов, параметрами учетной записи, а также многими другими причинами, о которых и пойдет речь в данном материале. Также будет рассмотрено методы решения данной проблемы.

    Прежде чем приступить к общепринятым методам диагностики проблем с Internet Explorer, которые вызывают ошибки сценария, необходимо убедиться в том, что ошибка возникает не только на одном конкретном сайте, а сразу на нескольких веб-страницах. Также нужно проверить веб-страницу, на которой возникла данная проблема под другой учетной записью, на другом браузере и на другом компьютере. Это позволит сузить круг поиска причины возникновения ошибки и исключить или подтвердить гипотезу о том, что сообщения появляются как следствие наличия на ПК некоторых файлов или настроек

    Блокирование Internet Explorer активных сценариев, ActiveX и Java

    Активные сценарии, элементы ActiveX и Java влияют на способ формирования и отображения информации на сайте и могут быть реальной причиной ранее описанной проблемы, если они заблокированы на ПК пользователя. Для того чтобы убедиться, что ошибки сценария возникают именно по этой причине необходимо просто выполнить сброс параметров безопасности браузера. Чтобы это осуществить следуйте следующим рекомендациям.

    • Откройте Internet Explorer 11
    • Сервис

    • В окне перейдите на вкладку Безопасность
    • Далее нажмите кнопку По умолчанию , а потом кнопку ОК

    Временные файлы Internet Explorer

    Каждый раз при открытии какой-либо веб-страницы, браузер Internet Explorer сохраняет на ПК локальную копию этой интернет-страницы в так называемые временные файлы. Когда таких файлов стает слишком много и размер папки, содержащей их достигает нескольких гигабайт, могут возникнуть проблемы с отображением веб-страницы, а именно появиться сообщение об ошибке сценария. Регулярная очистка папки с временными файлами может помочь устранить данную проблему.
    Для удаления временных интернет файлов выполните следующую последовательность действий.

    • Откройте Internet Explorer 11
    • Сервис
    • В окне перейдите на вкладку Общие
    • В разделе Журнал браузера нажмите кнопку Удалить…

    • В окне Удаление истории обзора поставьте флажки возле пунктов Временные файлы Интернета и веб-сайтов , Файлы cookie и данные веб-сайтов , Журнал
    • Нажмите кнопку Удалить

    Работа антивирусного программного обеспечения

    Ошибки сценария возможны через работу антивирусной программы, когда она блокирует активные сценарии, элементы ActiveX и Java на странице или папки для сохранения временных файлов браузера. В таком случае необходимо обратится к документации по установленному антивирусному продукту и отключить сканирование папок для сохранения временных интернет-файлов, а также блокировку интерактивных объектов.

    Неправильная обработка кода HTML-страницы

    Проявляется, как правило, на одном каком-то конкретном сайте и говорит о том, что код страницы полностью не адаптирован для работы с Internet Explorer. В этом случае, лучше всего отключить отладку скриптов в браузере. Для этого выполните следующие действия.

    • Откройте Internet Explorer 11
    • В верхнем углу браузера (справа) нажмите иконку Сервис в виде шестерни (или комбинацию клавиш Alt+X). Затем в открывшимся меню выберите пункт
    • В окне перейдите на вкладку Дополнительно
    • Далее снимите флажок с пункта Показывать уведомление о каждой ошибке сценария и нажмите кнопку ОК .

    Это перечень наиболее частых причин, которые вызывают ошибки сценария в Internet Explorer, поэтому если Вам надоели подобные сообщения, уделите немного внимания и решите проблему раз и навсегда.

    На данный момент существует большое количество различных браузеров, в той или иной степени поддерживающих существующие стандарты HTML. Лично я отдаю предпочтение браузеру от корпорации Mozilla. Этот браузер имеет долгую историю (он написан на основе знаменитого браузера Netscape Navigator). Также этот браузер мне нравится тем, что он поддерживает систему плагинов - отдельно распростаняемых дополнений, при подключении которых можно изменить функциональность и выполнить настройку под свои нужды. И, наконец, этот браузер является свободно распространяемым с открытыми исходными кодами, что также немаловажно. Поэтому я и решил описать возможности, которые данный браузер предоставляет не только пользователю, но и разработчику Web страничек, насколько легким и удобным может быть процесс отладки написанных продуктов.

    Mozilla Firefox является одним из самым популярным браузеров среди разработчиков и web-developers. Он привлекает к себе их внимание из-за тех возможностей, которые этот браузер предоставляет для отладки созданных проектов, исправления ошибок, улучшений. В стандартную поставку браузера включается java console (или «консоль ошибок»). Эта утилита позволяет выполнять отладку встроенных сценариев java-script. Но, гораздо большую функциональность браузеру придают сторонние плагины, которые можно скачать и установить с офицального сайта Mozilla Foundation . Сейчас я хочу рассмотреть два из этих плагинов - это Web Developer и Firebug . Оба из этих дополнений могут быть скачены по вышеперечисленным ссылкам с официального сайта дополнений. После их их установки и перезапуске браузера перед разработчиком открываются широкие возможности, которые я опишу ниже, по очереди для каждого из плагинов.

    Firebug plugin

    Как сказано на официальной страничке: «Firebug интегрируется с браузером Firefox, чтобы замечательно обогатить инструментарий разработчика. Вы сможете редактировать, отлаживать и исследовать CSS, HTML и Javascript «вживую», на любой веб-странице.» И это действительно так. Рассмотрим некоторые из функций данного плагина, а именно:

    • Просмотр и редакция HTML.
    • Построение CSS.
    • Мониторинг сетевых запросов
    • Отладка JavaScript
    • Исследование JavaScript
    • Логирование для JavaScript

    Это далеко не полный перечень всех его возможностей. Так проект является открытым (opensource), то любой желающий может изменять и дополнять функциональность.

    Для работы с плагином необходимо нажать клавишу F12 (Ctrl-F12 для работы с ним в отдельном окне). После успешного запуска получим следующее - рисунок 1а,1б.

    Рисунок 1а. Начальное окно плагина firebug.


    Рисунок 1б. Начальное окно плагина firebug.

    Далее начинается собственно работа с плагином. Скажем, нам необходимо найти тот или иной объект в HTML-коде, или определить, как именно реализуется с помощью CSS текущий фрагент. Для этого просто необходимо мышкой выбрать необходимые опции в меню окна плагина. В нижеприведенном примере - это HTML в режиме Inspect. Теперь, перейдя на страницу документа, под курсором мыши мы заметим прямоугольную область, иллюстрирующую тут участок, с которм ведется работа. В окне плагина мы увидим те параметры HTML и CSS которые используются. Также, нажав на каждый из них, можно производит изменения и отслеживать их в динамике. Описанные действия проиллюстрированы на рисунках 2,3,4.



    Разработке данного проекта вышеописанные плагин был использован именно для этих целей. Однако, хотя здесь и не был использован java-script, плагин firebug может быть использован также для его отладки. Пример отладки изображен на рисунке 5.


    На этом, как было описано выше, функциональность данного расширения, не ограничивается. Изучить его полностью и использовать в своих нуждах можно, загрузив по приведенным ссылках, предварительно установив Mozilla Firefox.

    Web Developer plugin Web Developer - второе расширение для браузера Mozilla Firefox, очень мощное и функциональное, которое позволяет производить быструю и эффективную отладку. После его установки в окне браузера появится дополнительная панель с инструментами, изображенная на рисунке 6.

    Дальнейшая работа с плагином интуитивно понятна. К примеру, если нам необходимо выполнить работу с CSS (хотя не так полнофункционально, как с плагином Firebug), то можно щелкнуть меню CSS и заблокировать, включить или выключить.

    Очень удобным для разработчика является возмоность просмотреть, как будет выглядить его проект на мониторах, с разным разрешением. Для этого необходимо использовать вкладку Resize. Здесь можно вручную задать необходимые разрешения экрана (800x600, 1024x768 и т.п.), а затем свободно переключаться между ними, приближать или удалять содержание. Данная функциональная возможность изображена на рисунке 7.

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

    Перечень использованных источников
    • 1. www.getfirebug.com
      Официальный сайт дополнения.
    • 2. http://addons.mozilla.org
      Официальный сайт компании Mozilla, где размещается плагины для браузера Firefox, информация для разработчиков, информация по использованию плагинов.
    • 3. http://chrispederick.com/work/web-developer/
      Официальный сайт разработчика плагина WebDeveloper.