Если пользователь захочет «обмануть» скрипт,
то, начиная со второй итерации цикла, в окошке приглашения он увидит
совсем другую строчку: «Вы ввели слишком длинный или слишком короткий
ник. Попробуйте еще раз!» (рис. 7.9) — и так до тех пор, пока, наконец,
строка требуемой длины не будет введена. После ввода подходящего ника
пользователь увидит приветствие, аналогичное показанному на рис. 7.10.
В теле цикла фигурирует два оператора— поэтому использование фигурных
скобок здесь обязательно.
Отладка сценариев
Учебные скрипты, рассмотренные нами выше, чрезвычайно просты. При
составлении сложных сценариев, однако, неизбежно будут появляться ошибки.
Ошибаться свойственно человеку— то скобку где-нибудь не закроешь, то
пропустишь точку с запятой, то поставишь лишнюю букву в имени
переменной…
Недаром программисты утверждают, что 90% времени разработки занимает
отладка. Тем не менее в сложных программных продуктах то и дело
обнаруживаются баги, не выловленные на этапах тестирования и отладки. Для
«латания дыр» выпускают «заплатки», которые исправляют старые ошибки, но
вместе с этим привносят новые… И этот процесс неизбежен и бесконечен.
Однако JavaScript-сценарии, формирующие динамические веб-страницы,
несопоставимы по сложности с операционными системами и флагманскими
прикладными пакетами— так что добиться полного отсутствия ошибок в
скриптах вполне реально.
Весьма удобным средством отладки сценариев, позволяющим локализовать
ошибки, является Консоль JavaScript, входящая в минимальный дистрибутив
браузера Mozilla Firefox (рис. 7.11). Вызвать ее можно через меню
Инструменты.
Консоль JavaScript позволяет отображать не только откровенные ошибки, но
и предупреждения, связанные, например, с нежелательностью использования
тех или иных конструкций JavaScript— морально устаревших,
нестандартных и т. п., не влияющих на исправность работы скрипта «здесь и сейчас», но,
354 Часть II. Применение веб-технологий стороны клиента для создания сайтов
>Кожойь JavaScript
&^г
*Шщ
Пр(МН#ВДОР
Предупреждение: redeclaration of var value
Источник: fj!&//iC^Pr^^
var va 1 ue ~ gP r e f. ge t С ornp 1 e xVa 1 ue (p r e f Name,
*
Строка: 4297
Предупреждение: useless expression
Источник: feji&QiPr&r^
Строка: 82
?J
tfJ
Предупреждение: useless expression
Источник: !M&;iiiIPJ2L$^^
Строка: 85
Предупреждение: redeclaration of var sbs
Источник: file;///С:/Proqrarn%;>QFiles/MozilJ7%?GFirefox/componentsfosUpdafceoervice.is Строка: 202
vac sbs * Components,classes["pmozilla.org/incl/stringbundle; 1"]
,v -.*~Л
Предупреждение: redeclaration of var bundle
Источник: ree:///C:/Frpcrqm%20FJes/Mo2ifo^^ Строка: 204
var bundle = sfo3.createBundle(«chrome://roosapps/locale/update/update.
рЖ
Предупреждение: redeclaration of var ps
Источник: fJ&j[#CjiPjLg&rjffi^^^ Строка: 209 рй
var ps = Components.classes["Oroozilla.org/embedcowp/prowpt-service;1"]
Ошибка: generateDocument is not defined
Источник: }ШШ!$АЙ?!ЖйШ2ШЯ1?Г’Ш;.
Строка: 1
Рис. 7.11. Консоль JavaScript в Firefox
AV ~ ч.
*ОД
~3 с*
javascriptallow.mailnews
javascriptenabled
javascript.options.showInConsole
javascript, options, strict
flQ*55WTfe вСЙ
Состо^ше
Tisn
[ЗнйЧент
булево false
булево true
булево false
установлено пользователем булево true
по умолчанию
по умолчанию
по умолчанию
keyword.URL по умолчанию
keyword .enabled по умолчанию
layout.enableJapanese_specific_transforrn по умолчанию
layout.frames.forcej-esizability по умолчанию
layout.wordjselect.eat_space_to__next_w… по умолчанию
layout.word_select.stop_at_punctuation по умолчанию
middlemouse.contentLoadURL по умолчанию
middlemouse .open New Window no умолчанию
middlemouse.paste по умолчанию
middlemouse.scrollbarPosition по умолчанию
mousewheel.horizscroll.withaltkey.action по умолчанию
Imousewheel.horizscroH.withaltkey.numli… по умолчанию
строка http://www….
булево true
булево false
булево false
булево true
булево true
булево false
булево true
булево false
булево false
целое 2
целое
Рис. 7.12.
5th Фев 2011
|
Теги:
|