КАТЕГОРИИ: Архитектура-(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 19 страница
Обратите внимание, этот код немного отличается от представленного в листинге 18.1, поскольку в данном случае мы собираемся передавать в функцию имя текущей формы. Благодаря принципу областей действия, нам не нужно писать полный DOM-путь к объекту myForm. Дело в том, что мы уже в myForm и путь к любым свойствам в вызовах функции будет начинаться с этого имени объекта. Теперь можно переписать саму функцию, чтобы она понимала, какое значение ей передается, и создать указатель: function compute (theForm) Как видите, создать указатель достаточно просто. Нужно только разместить его имя в скобках после имени функции. При ее вызове будет автоматически создан реальный указатель, которому будет присвоен нужный путь в терминах объектной модели. И теперь, получая доступ к объектам и значениям с помощью указателя, можете работать с ним так, как будто вы написали не одно имя переменной-указателя, а полный путь. Работа с объектами верхних уровней Мы еще вернемся к объектам формы. А сейчас обратимся к некоторым объектам, входящим в DOM. В частности, поговорим о window, location и чуть более подробно о document. Объект window Даже если вы его не знаете, вы наверняка с ним знакомы. Ну, скажем так, встречали. Мы буквально в этой же главе упоминали функцию erl ert (). Полный путь к ней выглядит следующим образом: window, alert О. Это означает, что данный метод является принадлежностью объекта wi ndow. Однако до тех пор, пока вы не собираетесь вывести окно сообщения в каком-нибудь другом окне браузера, отличном от текущего, этот полный путь вам не нужен. Вы, вероятно, помните, что alent () -выводит окно с сообщением, которое можно убрать, щелкнув на кнопке ОК. Пока окно активно, в главном окне браузера ничего не может происходить. Строка в скобках задает текст сообщения.
Как и у любого нормального объекта, у wi ndow есть свойства и методы. По большей части, свойства можно только считывать, а изменять нельзя, поскольку окно уже существует. Среди свойств есть такие как name (это то, что пишется в строке заголовка), 1 ength (число фреймов в окне), sel f (нечто типа указателя на самого себя, то есть на текущее окно) и status. Последнее можно использовать для изменения надписи в строке состояния браузера. Строка состояния обычно представляет собой краткое описание происходящего в данный момент на веб-странице. Вот пример: <а href = "products.html" onmouseover = "status='Пocмотреть полную линейку Продукция </а> У объекта window есть немало методов, позволяющих добавлять и изменять всякие рюшечки, касающиеся окна. Среди них есть уже знакомые alert() и eval (). Кстати говоря, eval () позволяет превращать любые строки в код JavaScript, а не только в числа. При работе с window можно использовать такие методы, как, например, confirm(), Делает он все то же самое, что и alert(), только вместо одной кнопки ОК окно содержит две кнопки: ОК и Cancel (Отмена). Если пользователь щелкает на ОК, возвращается значение true, а если на крестике в верхнем правом углу или на кнопке Cancel, возвращается false. Например: var keepGoing = confirm("Хотите продолжить?"); В то же семейство методов можно отнести prompt (), который тоже открывает диалоговое окошко, но при этом ожидает от пользователя ввода значения. Можно указать либо только текст сообщения, либо и текст сообщения, и подсказку, которая будет видна по умолчанию в поле ввода. Пример: var numberGuess = prompt("Введите число". 5); Метод ореn() предназначен для открытия нового окна браузера. Можно указывать разные параметры, управляющие внешним видом окна, и даже задавать сразу URL, который будет открыт. Чтобы просто открыть окно и загрузить в него какую-нибудь веб-страницу, напишите выражение:
window.open("URL") Существует такой метод: resizeTo(). Он позволяет автоматически масштабировать окно браузера, то есть задать его высоту и ширину в пикселах. Например, если ваш сайт лучше всего смотрится при 800 х 600, можете включить в заглавную страницу следующую строку: <body onload="window.resizeTo(800.600)"> Наряду со всеми этими свойствами и методами объект wi ndow имеет ряд подобъек-тов, среди которых location, document и history. О первых двух будет отдельный разговор, а что касается объекта history, то пару слов о нем я хочу сказать прямо сейчас. Его можно использовать в основном для получения доступа к URL, которые пользователь недавно открывал и которые браузер хранит в памяти. Среди свойств объекта history следующие: current, previous, next. Они служат для открытия недавно посещенных страниц. Свойство length позволяет узнать, сколько адресов хранит браузер. При этом метод history.go(x) позволяет перейти на страницу с номером х. Если х положительное, то метод будет отсчитывать страницы «назад». Если вы напишете отрицательное значение х, отсчет будет вестись «вперед». Вот еще два полезных метода hi story: back 0 и forward(). Служат для перехода, соответственно, назад и вперед: <а href="" onclick="history.back()">Haзaд</a> Объект location Как уже говорилось, этот объект является частью объекта wi ndow, поэтому полный путь к нему следующий: window, location. Обычно, впрочем, текущая область действия такова, У этого объекта существует немало свойств, document.writeln("Aдрес этой страницы: " + location.href): Все остальные свойства location возвращают какие-то отдельные части адреса. Рассмотрим полный список:
Эту информацию можно использовать. Например, на каждой странице где-нибудь вуглу помещать ее реальный URL. Вспомним, как это делается: document.writeln("Адрес этой страницы: " + location.href):
Можно, например, загрузить в браузер новую страницу таким способом: location.href = "http://www.fakecorp.com/newpage.html" Объект document Это еще одно детище объекта wi ndow. Однако деточка эта весьма взрослая и самостоятельная. На самом деле при написании скриптов на JavaScript и, в частности, при разработке форм именно document оказывается наиболее часто используемым объектом. Действительно, именно здесь хранятся все объекты и элементы ваших страниц. И уровень document не низок, не высок, а как раз очень удобен. Хочется упомянуть в первую очередь такие свойства данного объекта:
Почти все свойства говорят сами за себя. Что касается трех массивов anchors, images и forms, то доступ к ним осуществляется так же, как к массивам, которые обсуждались в главе 17. Например, чтобы отыскать URL первого изображения на странице, можно написать следующее: alert(document.images[0].src); А можно и изменить URL изображения, и это приведет к тому, что на странице появится ссылка на другой графический файл. Нечто в этом духе мы еще будем обсуждать в главе 19, поскольку это считается «приемом из DHTML». А так вроде все довольно просто и понятно: document.images[0].src = "images/new.gif" У объекта document есть несколько методов, Разница в том, что первый автоматически вставляет специальный знак перевода каретки (который, впрочем, все равно не распознается браузером, если только текст не заключен в теги <рге>),
Существует возможность очистить текущую страницу и Затем с помощью document, write О записываем в нее все что нужно. Теперь document. close() — и новая страница готова! Рассмотрим листинг 18.2. Листинг 18.2. Персонализация с использованием формы <!DOCTYPE html PUBLIC "\//W3C//DTO XHTML В этом примере следует обратить внимание не только на метод document. open(), но и на то, что на самом-то деле страница не изменяется. Выражение var userName = persona 1 Form. myName. value; говорит о том, что мы находимся на соответствующем уровне областей действия, то есть нам не надо никак усложнять путь к объекту personal Form. Если бы изменилось значение location. href), нам пришлось бы немного потрудиться, прежде чем получить доступ к тому же значению. На рисунке 18.2 демонстрируется листинг 18.2 в действии. Рис. 18.2. Страница до (сверху) и после (снизу) запуска скрипта JavaScript и формы HTML В предыдущем параграфе мы рассмотрели некоторые объекты DOM, которые можно изменять и к которым можно получить доступ с помощью JavaScript. В этом разделе мы будем рассматривать одну из составляющих объекта document под названием form. Объект form Для начала разберемся с тем, как создать несколько форм. Дело в том, что каждая форма будет иметь свое собственное имя (для этого используется значение атрибута name элемента <form>). А значит, получить доступ к элементам формы будет несложно. Итак, сначала даем имя (name="MyForm"), потом получаем доступ к любым элементам: var name = document.myForm.custName.value Вы знаете, как передать в функцию значение, указатель или же вообще ничего не передать и предоставить функции Но вы также знаете, что у этого объекта есть свойство forms, представляющее собой массив форм, содержащихся в текущем документе. Например, если предположить, что форма myForm из предыдущего примера является первой на странице, то к ней можно получить доступ следующим образом: var name = document.forms[0].custName.value: Иногда бывает нужно организовать автоматический доступ к формам. Попробуй те в этом случае поступить следующим образом: for (x=0: х<3: х=х+1) { С помощью такого цикла for можно все имена форм записать в массив, тем самым организовав независимый доступ к Все объекты формы, независимо от того, каким образом осуществляется доступ к ним, имеют свои наборы свойств, как и документ, окно. Свойства объекта form, в частности, следующие:
У объекта form есть, конечно, и свои методы, среди которых reset (), submit (), очевидного предназначения. Обработка ошибок на форме с помощью JavaScript JavaScript и его обработчики событий идеально подходят для проверки данных, вводимых пользователями в формах. Во время набора данных скрипт может незаметно проверять корректность кодировки, числа символов и т. д. Оказывается, можно обработать практически любой элемент формы, хотя, скорее всего, вы займетесь работой над текстовыми полями и полями ввода. Начнем с небольшого примера. В листинге 18.3 закодирована целая страница, позволяющая ее посетителю вводить данные. Скрипт осуществляет проверку правильности ввода почтового индекса. Листинг 18.3. Проверка данных в формах с помощью JavaScript <!DOCTYPE html PUBLIC "\//W3C//DTD XHTML
<form action="cgi-bin/address.pl" method="post"
Обработка формы начинается при возникновении события onBlur, то есть при потере фокуса поля ввода индекса, либо при нажатии клавиши Tab, либо с помощью мыши. Обработчик запускает функцию zipCheck, которая проверяет введенный почтовый индекс на корректность. Если поле осталось пустым, выдается окошко ] с напоминанием о том, что это поле следует заполнить. Это делается путем проверки значения строковой переменной: if (zipStr = "") { Если введено больше или меньше 6 цифр, также выдается предупреждение. На этот if (zipStr.length!= 6) {. Если пользователь сделал все правильно, продолжается нормальная работа. var passCheck = zipCheck(): И если индекс по-прежнему остался неправильным, функция zipCheck вернет зна if (passCheck = -1) { } Так что если и на этот раз индекс введен неверно, то функция checkSend верне пользователя на продолжение заполнения формы. В общем, получилась много ступенчатая защита от неправильного ввода. Если пользователь наконец набрал на клавиатуре шесть цифр, форма подтверждается: Рис. 18.3. Если введен неправильный индекс, появляется окно с предупреждением В действительности мы проверили индекс только частично. Проверка могла бы быть сколь угодно сложной. Например, можно запретить использование буквенных символов в этом поле. Это можно сделать, применив метод charAt() объекта String, который тщательно проверит каждую позицию и установит, Итак, расширенная функция zipCheck() может выглядеть следующим образом: function zipCheckO Итак, мы добавили еще одну проверку. Она начинается с цикла for, чтобы прог амма могла произвести необходимое количество итераций, охватив всю длину поля ввода: for (х = 0: х < 6; х++) Используя цикл for, мы можем последовательно перебрать все значения массива zipStr (а ведь строка представляет собой лишь особый вид массива!) с номерами от 0 до 5. В цикле находится условное выражение if, — собственно говоря, именно оно и проверяет, являются ли символы цифровыми: if ((zipStr.charAt(x) < "О") || (zipStr.charAt(x) > "9")) { Знак || означает логическое «или». Все приведенное выражение переводится на человеческий язык так: «Если символ меньше чем 0 или больше чем 9». То есть если выполняется хотя бы одно из условий, то все выражение принимает значение «истина», и появляется окошко с предупреждением: alert("Индекс должен состоять только из цифр!"): Если же выражение if принимает значение «ложь», то команды, содержащиеся внутри, пропускаются, и предполагается, JavaScript на клиентской машине Одним из преимуществ JavaScript является то, В некоторых случаях вы с удивлением сможете обнаружить, Листинг 18.4. Форма, обрабатываемая на стороне клиента <!DOCTYPE html PUBLIC "\//W3C//DTD XHTML
if (Forml. desktop. checked) result_str +=
</head> Фамилия: </td><td><input type="text" name= в Интернете или Интернет-ссылка<bг />
Этот скрипт с методической точки зрения очень полезен для изучения. Скрипт берет значения, введенные пользователем в первой форме, и помещает их в текстовом виде во вторую форму. Затем можно редактировать данные, например добавлять комментарии (рис. 18.4). Наконец, при нажатии на кнопку SEND IT! (Отправить!) вся накопленная информация отправляется по электронной почте. Рис. 18.4. Пользователь может отредактировать данные перед отправкой ПРИМЕЧАНИЕ Хотя данные придут в формате «post» (глава 15), однако обрабатывать придется всего лишь одно поле, благодаря предварительному анализу, производящемуся в скрипте. Этот пример показывает, как важно получать корректные значения флажков и переключателей. В листинге 18.4 демонстрируются два способа, которыми это можно сделать. Для начала обратимся к переключателям. Нам нужно опреде лить, какое положение селективной кнопки выбрано, тогда мы сможем работать с соответствующими данными. Значения переключателей хранятся в специальных массивах, а следовательно, мы можем получить доступ к ним с помощью цикла: for (х = 0: х < Forml. where. length; x++) В свою очередь, все переключатели тоже хранятся в массиве объектов, имена кото рых определяются при помощи атрибута name, указываемого при их создании. В на шем примере name="where". С каждым экземпляром where можно использовать свойство checked для того, чтобы определить, в каком положении находится реключатель. Когда мы найдем тот объект where, свойство checked которого равно true, это будет означать, что именно его value нам и нужно. Поэтому фактически приведенный ранее цикл занимается определением положения переключателя. Когда он его находит, цикл for завершается (командой break), а со значением производятся определенные действия. В данном случае оно добавляется к строке result_str. Второе, что показано в этом примере, — это работа с наборами флажков. И здесь тоже нужно проверять состояние свойства checked. Но поскольку каждый флажок имеет свое собственное имя (name), то нет необходимости хранить их в каком-то массиве или использовать цикл для их перебора. К каждому флажку требуется индивидуальный подход, у каждого из них лично нужно выяснить, является ли он checked. Если это так, то используется его значение: if (Forml.desktop.checked) result_str += Если ([шажок установлен, то его значение добавляется к result_str. В противном случае скрипт переходит к следующему условному оператору. Переадресация, фреймы и JavaScript Теперь вы узнали, как получать доступ и изменять некоторые основные объекты DOM, увидели, как извлекать информацию из форм и использовать JavaScript для изменения данных в них. В этом разделе мы рассмотрим некоторые приемы, позволяющие организовать переадресацию, строить ссылки и применять JavaScript для работы с фреймами. Переадресация браузера Бывает интересно и полезно узнать, какой браузер использует пользователь, чтобы автоматически отправить его на ту или иную страницу. Иногда важно не только узнать название программы, но и определить, имеет ли она поддержку JavaScript и в соответствии с этим принять решение о переадресации на подходящий URL. При переадресации браузера используется объект, С помощью его свойств можно узнать, с какой версией браузера вы имеете дело. Например, в переменной navigator.appName xpaнится полное имя приложения, объект navigator.userAgent сообщит вам общую информацию об уровне совместимости данного ПО (например, Mozi 11 а/4.0 может на поверку оказаться любой Netscape-совместимой программой уровня 4.0).
Дата добавления: 2014-12-29; Просмотров: 402; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |