КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Что такое HTTP 16 страница
В этой главе вы найдете только введение в JavaScript. Глава 18 охватывает конкретные вопросы, связанные с обработкой пользовательского ввода. Затем в главе 19 мы обсудим еще один специальный вопрос о связи Dynamic HTML и JavaScript. Что касается данной главы, то она имеет следующие разделы:
Что такое JavaScript? JavaScript — это язык написания скриптов. Он похож на AppleScript, VBScript — собственно нечто, на всю линейку языков написания скриптов. Хотя его интерфейс очень похож на интерфейс полноценных программных языков, таких как С, C++ и Java, не нужно сильно заботиться о том, что стоит за этим сходством. Структура JavaScript по сравнению с ними несколько ограничена, что не умаляет его значения для веб-приложений. JavaScript был разработан компанией Netscape для совместной работы с HTML (и XHTML) и создания более динамичных и интерактивных страниц. Браузеры Netscape и IE имеют полную поддержку JavaScript, начиная с 3.0, тогда как другие — только частичную и не всегда корректную. Зачастую вы не можете рассчитывать на то, что все ваши пользователи имеют браузеры с поддержкой JavaScript, при написании caйтов нужно учитывать это. Мы еще вернемся к данному вопросу в этом разделе. ПРИМЕЧАНИЕ Реализация JavaScript от Microsoft носит название JScript. В целом оба варианта представля ют собой примерно одно и то же, однако в JScript есть несколько отличающихся команд. Тем не менее они являются вполне законными последователями официального стандарта ECMAScript (http://www.ecma.ch/ecmal/STAND/ECMA-262.HTM). ЕСМА — это европейская ассоциация производителей вычислительной техники, установившая ряд спецификаций, которым, в частности, подчиняются языки JavaScript и JScript. JavaScript предназначен для работы с разными элементами веб-страниц, реагиро вания на пользовательский ввод, передачи значений полей форм в выражения и формулы, иначе говоря, он из обычной страницы делает подобие компьютерной программы. Если поближе познакомиться с JavaScript, то можно научиться весь ма элегантно и просто решать такие вопросы, как автоматизация создания интер фейса форм и проверка введенных в них данных (рис. 17.1). Рис. 17.1. С помощью JavaScript можно, например, проверять, все ли необходимые поля формы заполнены, причем делать это еще до того, как данные будут отправлены на сервер для обработки CGI-скриптом JavaScript не входит ни в старый стандарт HTML, ни в новый XHTML, несмотря на то что он используется почти всегда с HTML-страницами и в обоих стандартах есть элемент <script>. Более того, JavaScript и его ближайшие родственники явля ются основной составляющей того, что называется Dynamic HTML, в котором, кроме него, используются таблицы стилей и другие интересные инструменты, позво ляющие создавать действительно интерактивные веб-страницы. Какое отношение имеет JavaScript к Java? Следует помнить, что JavaScript и Java — это не одно и то же, они вообще не имеют друг к другу никакого отношения, за исключением, пожалуй, названия. Посудите сами: Java — это полноценный язык программирования, созданный компанией Sun Microsystems в духе C++. Он предназначен для профессиональных или полупрофессиональных программистов и имеет следующие широкие возможности.
Многие веб-браузеры имеют поддержку Java, организованную примерно в такой же манере, как поддержка мультимедиа. Приложения могут работать прямо в окне браузера, вызывая у пользователя ощущение, будто он работает с программой, установленной на его жестком диске. Концепция виртуальных машин становится настолько сильна, что рано или поздно наступит время, когда во главе всех языков программирования встанет что-нибудь Java-подобное. Идея состоит в некотором упрощении клиентских Java-машин. Обычно программная начинка компьютера определяется тем, какое ПО и какая ОС на ней установлены. Например, невозможно работать с Mac-программами на компьютере с Windows. Почему? Да потому, что программы для Macintosh рассчитаны на другой процессор и другое оборудование, нежели то, что используется Microsoft Windows. Однако Java создаст стандартный компьютер, то есть виртуальную машину, базируясь исключительно на программных элементах. Таким образом, вместо того чтобы программировать «под Мас» или «под Windows», можно создавать приложения для виртуальных машин, которые при их использовании разными компьютерными платформами практически ничем не отличаются. Поскольку виртуальная машина создастся браузером, то программы, написанные на Java (в данном контексте более уместно называть их «апплетами»), можно запускать непосредственно в его окне. Но на сегодняшний день истина заключается в том, что виртуальные машины Java еще не подмяли под себя настольные компьютеры, поэтому все-таки приходится писать разные приложения под Mac, Windows, Unix, Linux и т. д. По крайней мере, по-разному их компилировать. То есть существуют «настольные» Java-приложения для обычных компьютеров и сетевые программы. Но помимо всего этого Java является популярным языком программирования, и программное обеспечение обоих типов сегодня пишется именно на нем. Почему же столь похожи названия JavaScript и Java? Оказывается, это не случайно. Дело в том, что JavaScript, не являясь полноценным языком, использует синтаксис команд, который очень сильно напоминает Java. Язык Java — прямой наследник C++, а тот, в свою очередь, немало взял от С. Это не только историческая справка, но и намек на то, что программисты, знакомые хотя бы с одним из этих современных объектно-ориентированных языков программирования, с легкостью освоят JavaScript. JavaScript или VBScript? На сегодняшний момент JavaScript — самый популярный язык написания скрип тов. VBScript сильно отстает, но все же занимает почетное второе место среди язы ков для написания веб-сценариев. И это несмотря на то, что он поддерживается только технологией Microsoft и единственным типом браузеров — Internet Explorer для Windows. В чем же особенность VBScript? Это язык, рекомендованный для элементов управления ActiveX (это такая разновидность Java-апплетов, придуманная Microsoft). К тому же он очень похож на Visual Basic, популярный язык программирования под Windows. И Java, и JavaScript являются платформонезависимыми языками, тогда как VBScript вместе с ActiveX предназначен только для Windows. Эта и последующие две главы рассказывают только о JavaScript, потому что это язык, являющийся кроссплатформенным и использующий наиболее понятный синтаксис. И все же оговорюсь, что если вы намерены написать специализирован ный сайт, рассчитанный исключительно на продукцию Microsoft (например, для каких-нибудь внутренних сетей), если вы привыкли работать с элементами ActiveX или если вы — профессиональный программист на VB, то можете попробовать применить VBScript для создания скриптов. Как работает веб-скрипт Обратимся к рассмотрению двух основных концепций, на которых держатся веб-скрипты: «функции» и «обработка событий». В большинстве скриптов имеются две секции: одна из них расположена в <head> веб-документа, другая — внутри <body>. В первой содержатся функции, а во BTO рой — вызовы этих функций. Вызовы функций к обработке данных имеют косвенное отношение. Собственно коды алгоритмов находятся в секции, расположенной в <head>. Что же тогда дела ют вызовы? Они передают в функции фактические аргументы, то есть значений переменных, необходимых для их работы. Функции, приняв вызов, начинают выполнять алгоритм, содержащийся в нем. То есть что-нибудь считать, преобразо вывать и т. д., затем возвращают результат. Конечно, весь этот процесс не имел бы никакого смысла, если бы вызовы функции просто выполнялись по порядку. Тогда можно было бы весь скрипт разместил в одной секции документа. Но вся ценность функций в том, что их можно использовать многократно, причем в разных местах документа и в произвольном поряд ке. Именно здесь вступает в игру принцип обработки событий. Смысл его заклю чается в следующем: скрипт ожидает какого-то события (нажатия пользователем кнопки, какого-нибудь значения таймера и т. п.), по наступлении которого производит вызов функции. Дальнейшая схема уже известна: фактические переменные передаются в функцию, та выполняет все шаги своего алгоритма, после чего возвращает результат. Такой подход называется функциональным: скрипт ожидает наступлениям кого события и запускает соответствующую функцию. В отличие от него пи процедурном подходе программа выполняется строго по порядку. Допустим нужно получить какую-то часть информации или вычислить определенный набор значений. Одной задачей занимается одна функция, другой — другая.3а пускаются только те функции, которые необходимы для решения поставля ных задач. Но происходит это только в том случае, если постановка заданияляется событием, распознаваемым скриптом. Весь этот механизм и называется обработкой событий. ПРИМЕЧАНИЕ Обратите внимание на то, что событие — это не обязательно какое-то действие пользователя. Им может являться какое-то значение системного таймера, факт загрузки страницы, изменение какой-то переменной и т. д. Все зависит от того, на что запрограммирован скрипт. А уж реакция может вообще любая. Автоматическое генерирование HTML-страницы, изменение содержимого фрейма, создание электронного письма... Всего не перечислишь. Ввод скриптов в веб-документы JavaScript — это еще одна составляющая, являющаяся обычным текстом. Для написания скриптов вам не потребуется никаких специальных приложений. То есть нужно иметь какой-нибудь текстовый редактор попроще, чтобы он не занимался самодеятельностью в виде попыток как-нибудь отформатировать набранный код или сохранить его в каком-нибудь замысловатом формате. Ничего подобного нам не требуется. Также под рукой полезно иметь руководство разработчика по JavaScript от компании Netscape, которое вы можете найти по адресу: http://devetoper.netscape.com/ docs/manuals/js/client/jsguide/index.html. Ну и конечно, нужно не забывать тестировать свои скрипты на максимальном количестве доступных браузеров: Internet Explorer, Netscape разных версий. Если вы используете JavaScript для деловых или организационных целей, то этап тестирования особенно важен. При работе с JavaScript в вашем словаре появляется новый элемент HTML: <script>. Хотя он и является типичным контейнером XHTML, необычно то, что его придется прятать внутри страницы. Элемент <script> и скрытие скрипта Элемент <script> обозначает начало и конец блока, содержащего команды скрипта. Он является контейнером, имеет атрибут type, позволяющий указать название языка, на котором был написан скрипт (по умолчанию им считается JavaScript). ПРИМЕЧАНИЕ Чтобы отдать дань в первую очередь совместимости с древними браузерами (IE и Netscape версий младше чем 3.0), можно включить в состав <script> атрибут language="JavaScript". Современные браузеры могут обойтись без этого, но одновременное использование и type, и language избавит вас от множества проблем. Например: <script type="text/javascript"> Возможно, старые браузеры, не знакомые с JavaScript, просто пропустят команды скрипта, но некоторые из них могут попытаться интерпретировать их как разметку HTML. Поэтому будьте внимательны и позаботьтесь о том, чтобы код скрипта как-нибудь спрятать. Обманем несовместимые с JavaScript браузеры с помощью такой уловки. За комментируем команды скрипта. Поскольку элементы HTML и JavaScript, обозначающие комментарии, отличаются друг от друга, это действительно возможно: <script type="text/javascript"> Чтобы старые браузеры не проявляли излишнюю инициативу, увидев незнакомый код скрипта, приходится его прятать от них таким образом. Может быть, вы даже заметили, что закрывающий тег комментариев начинается с двойной косой черты (//). Это сделано для того, чтобы не ругался JavaScript, увидев --> (с его точки зрения это два знака «минус» и знак «больше»). Приходится комментировать комментарий, используя соответствующий синтаксис JavaScript. Конечно, основное назначение комментариев в скриптах состоит в том, чтобы предоставить возможность включить кое-какую информацию о программе. В частности, можно написать, как работает скрипт и почему он делает то, что он делает: <scrlpt type="text/javascript"> Итак, есть два типа комментариев: однострочные и многострочные. Однострочные составляются из двух косых черт (//) и служат для тех комментариев, которые могут целиком уместиться на одной строке. Многострочные представляют собой комбинацию из косой черты и звездочки (/*) — тогда это открывающий тег - либо из этих же символов, но в обратном порядке (*/) — тогда это закрывающий тег. Первый и второй могут располагаться на разных строках, а значит, комментарий может быть настолько длинным, насколько потребуется. СОВЕТ Пытаясь скрыть код с помощью комментариев, можно потерять много времени, если каждый раз заново думать о том, где должны располагаться какие теги комментариев. Лучше всего создать шаблон и включить в него все необходимое для начала работы. Strict или Transitional? Если вы прячете скрипты от старых браузеров, значит, вы используете XHTML Transitional. Потому что если вы хотите следовать стандарту XHTML Strict и при этом иметь на веб-странице какие-то скрипты, вы, конечно, можете это делать, но только не внедряя определения функций в HTML-код. Применяйте связывание с функциями, хранящимися в отдельном файле, и будьте счастливы. Впро чем, можно внедрить, но еще дальше перепрятать скрипт, об этом я тоже сейчаc расскажу. Причиной таких хитрых действий по укрыванию кода, нетипичного для XHTML, <!DOCTYPE html PUBLIC "\//W3C//DTD Вы уже заметили разницу? Анализатору XML говорится: «Это не твоя область компетенции» с помощью тегов <![CDATA[ и ]]>. По крайней мере, такой подход является официальной рекомендацией. Проблема в том, что этот метод скрытия кода во многом остается теоретическим. Может быть, в будущем его и будут применять, но пока что эти теги просто не работают. Так что внедрять коды JavaScript и при этом оставаться в рамках XHTML Strict просто не получается. Если вам действительно принципиально иметь DTD для XHTML Strict, могу посоветовать лишь одно — метод связывания. Берете все объявления функций скрипта (это то, что раньше было в секции <head>), помещаете их в отдельный документ и связываете с ним свою веб-страницу. Это будет выглядеть следующим образом: <head> Документ, ссылку на который вы видите, — это обычный текстовый файл, содержащий текст скрипта. Он начинается с первой его команды, как будто заключен в контейнер <script>. Это, наверное, единственный способ избежать этой непонятной игры в кошки-мышки со старыми браузерами. ПРИМЕЧАНИЕ Впрочем, можно отказаться от следования строгому стандарту XHTML на страницах, содержащих JavaScript. (Я так и буду делать в этой и последующих двух главах.) Между прочим, есть еще одна проблема: к тому времени, как Сеть полностью перейдет на стандарт XHTML Strict, могут измениться требования к скриптам, внедренным в страницы. Скрипты и элементы <meta> и <noscript> вообще-то, каждый экземпляр элемента <script> на странице должен иметь атрибут type, хотя далеко не всем браузерам это действительно необходимо. Это требование можно обойти, если в начало страницы вставить элемент <meta>, который задаст значение type по умолчанию. <meta> должен быть расположен в секции <head>: <head> <title>JavaScript no умолчанию</title> Когда у вас на странице будет не один скрипт, а много, вы оцените необходимостн Обработчики событий JavaScript (в том случае, когда функции скрипта вызым ются из самой веб-страницы) не позволяют указывать type скрипта. Поэтому остается лишь положиться на <meta> (или же предоставить браузеру возможность угадывать самостоятельно). Наконец, XHTML предлагает использовать контейнерный элемент <noscript>,ко торый сосуществует со <scri pt> и позволяет написать альтернативную HTML разметку для тех браузеров, которые не могут ничего поделать со скриптами. Вря зультате код выглядит следующим образом: <body> Давайте соберем все полученные знания в одном шаблоне и рассмотрим небольшой пример. Пример «Hello World» Говорят, первая в мире программа в результате своей работы выдала на устройство вывода следующее: «Hello World». Эта фраза стала исторической, и с тех пор при изучении любого языка первая программа традиционно делает то же самое. Наш пример покажет основные приемы, используемые при написании кода скрипта и при его скрытии. Вы, вероятно, поймете и то, как работает сам элемент <script> Для того чтобы до конца понять данный пример, нужно познакомиться с. одной новой командой: document. writelnO, в JavaScript это называется «метод». Определение метода — это такая функция, которая встроена в какой-либо объект, с помо щью метода объект может автоматически производить определенные действия. В данном случае объект может автоматически производить «запись» в «документ». Другими словами, метод document. writelnO выводит текст на веб-страницу. Листинг 17.1 — это полноценный документ HTML, в который включен небольшой скрипт на языке JavaScript. Листинг 17.1. Пример «Hello World» <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Обсудим некоторые моменты, встретившиеся нам в этом примере:
Рис. 17.2. Корректный результат выполнения скрипта из примера «Hello World» Сохраните документ под каким-нибудь именем типа helloworld.html и откроите его в браузере. Если все в порядке и с набранным кодом, и с браузером, вы должны увидеть то же самое, что изображено на рис. 17.2. Если ваш браузер не умеет работать с JavaScript, то вы увидите только сообщение об этом (содержащееся в контейнере <noframes>) и ничего более. Создание функций на JavaScript Функцию можно представить себе как мини-программу внутри скрипта. Вообще-то, предназначение функции состоит в том, чтобы выполнять какое-то одно задание и возвращать результат в вызвавшую ее программу. Работа функции начинается с передачи в нее значений переменных. Они, конечно, не просто так передаются, а используются в вычислениях. Затем, в большинстве случаев, функция возвращает новое значение в тело скрипта. Вы можете составить целый скрипт из одного непрерывного блока, но такой процедурный подход не оправдывает себя. Правильнее будет разбить код на две глобальные составляющие: описания функций и их вызовы. Тем самым вы получаете как минимум два очень значимых преимущества.
Объявление функций Что значит «объявление функции»? Объявляя функцию, вы говорите браузеру: «Я собираюсь завести себе вот такую маленькую функцию, и вот то, что она будет уметь». Когда браузер загрузит страницу, он увидит ваше послание и будет знать, куда бежать, если вдруг случится вызов какой-либо функции. Большинство программистов справедливо предпочитают размещать объявления функций в разделе <head>, хотя это не является официальным требованием. С технической точки зрения, функции могут быть определены (объявлены) где угодно, хоть в самом конце страницы. Объявление располагается внутри контейнера <script>, причем не обязательно только одно. На самом деле, JavaScript в этом смыc ле ведет себя несколько загадочно, поскольку все элементы <script>, составленные вместе, как раз и составляют весь скрипт. Рассмотрим формат определения функции: <script type="text/javaschpt"> <!-- прячем скрипт Помните, что, когда скрипт вызывает функцию, он часто передает в нее фактический параметр, который подставляется вместо формального. Нужно не забыть указать имя формального параметра. Если функция предназначена для выполнения простых вычислений, можно дать переменной какое-нибудь имя типа first_num. Затем его можно использовать в формулах: newjium=first_num+ 3. Давая имя входному параметру функции, вы тем самым создаете переменную. Компьютер резервирует для ее размещения некоторый отрезок памяти и дает ему имя. Можно присвоить ему какое-нибудь значение, а потом даже использовать в своем скрипте. Например: 1. В теле скрипта посылаем значение 5 в функцию. 2. Функция получает значение и создает переменную myjiumber, которой его и присваивает. 3. Затем вы говорите скрипту: «Прибавь 10 к моей переменной myjiumber» (newjium-ber=my_number+10). 4. Если вы все сделали правильно, скрипт возвращает результат и сохраняет его в переменной new_number. 5. В тело программы передается получившееся значение. Ответ — 15. Обратите внимание на ключевые слова function и return. Слово function всегда начинает объявление функции, за ним следует ее имя и (в скобках) имя переменной, которой нужно присваивать входное значение. Что касается return, то это — конец объявления, оно сообщает функции о том, что нужно вернуть новое значение туда, откуда она была вызвана. А еще обратите внимание на то, что вся вычислительная часть объявления располагается между function и return и между двумя фигурными скобками. Приведу пример объявления функции: <script type="text/javascript"> Здесь, кажется, все должно быть уже понятно. Мы создали функцию под названием get_Square, передали в нее значение (в переменную num), затем, в строгом соответствии с алгоритмом, это число было умножено само на себя, присвоено пере менной SquareNum и возвращено. Теперь вы знаете, для чего нужны объявления функций. Само по себе объявление ничего делать не будет, потому что нужно еще передать конкретное значение пара метра. Далее мы рассмотрим, как это делается. Вызов функций и возвращение значений Само тело скрипта представляет собой набор вызовов функций. Это, может быть, непривычно слышать, но это так. В рамках самого скрипта осуществляется очень небольшая часть всех вычислений. Все, что вы делаете, — это в основном посылаете какие-нибудь значения в функции, затем получаете результаты. Вызов функции может располагаться либо внутри контейнера <script>, либо в качестве атрибута, определяющего обработчик событий (глава 18), либо в URL Типичный вызов функции выглядит так: Имя функции(значение): В скобках можно ввести имя переменной, реальное значение или строку текста, в зависимости от того, что требуется функции в каждом конкретном случае. (Вызовы функций внутри тела документа должны быть внутри тегов <script>, как и определения функций в заголовке.) ПРИМЕЧАНИЕ Если у функции есть формальный параметр, то при ее вызове всегда нужно передавать его значение. При этом типы данных должны быть совместимыми. Если вы передадите функции, выполняющей математические вычисления, символьную строку, вряд ли в результате вы получите какую-нибудь полезную информацию. В качестве примера рассмотрим следующий скрипт. В нем будет вызываться уже знакомая функция getSquare: <script type="text/javascript"> В этом вызове функции происходит: 1. Переменной myNum присвоили значение 10. 2. Эта переменная (а значит, число 10) передается в функцию get_Square. (В этом примере предполагается, что используется та самая функция, речь о которой < шла в предыдущем параграфе.) 3. Когда функция принимает число 10, она присваивает его переменной num, после этого производятся вычисления.
Дата добавления: 2014-12-29; Просмотров: 444; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |