
- •13. Создание динамического наполнения страницы. JavaScript-библиотеки и технология Comet
- •13.1. Представление объектов в виде json
- •13.1.1. Использование
- •13.1.2. Синтаксис
- •13.1.3. Использование json в Ajax
- •13.1.4. Вопросы безопасности
- •13.1.4.1. JavaScript eval()
- •13.1.4.2. Подделка кроссдоменного запроса
- •13.2. Библиотека ExtJs
- •13.2.1. Объектно-ориентированное программирование
- •13.2.1.1. Ext.Namespace
- •13.2.1.2. Ext.Override
- •13.2.1.3. Ext.Extend и соглашения о параметрах конструкторов
- •13.2.1.4. Ext.Apply
- •13.2.1.5. Ext.ApplyIf
- •13.2.2. Построение веб-интерфейсов
- •13.2.3. Использование css
- •13.2.4. Основные компоненты и возможности
- •13.2.5. Визуальные компоненты
- •13.3. Библиотека Prototype
- •13.3.1. Возможности
- •13.3.1.6. Объект Ajax
- •13.3.1.7. Класс Element
- •13.3.2. Объектно-ориентированное программирование
- •13.4. Библиотека jQuery
- •13.4.1. Философия
- •13.4.2. Использование
- •13.4.4. Инициализация
- •13.4.5. Управление элементами документов и их свойствами
- •13.4.5.1. Последовательный вызов функций
- •13.4.6. Работа с индивидуальными элементами
- •13.4.6.1. Индексы и get([index])
- •13.4.6.2. Each(fn)
- •13.4.7. Анимации
- •13.4.7.1. Animate
- •13.4.7.2. Эффекты
- •13.4.8. Ajax
- •13.5. Модель работы веб-приложений Comet
- •13.5.1. Http server push
- •13.5.2. Pooling
- •13.6. Ключевые термины
- •13.7. Краткие итоги
13.3. Библиотека Prototype
Prototype – JavaScript-фреймворк, упрощающий работу с Ajax и некоторыми другими функциями [7]. Несмотря на его доступность в виде отдельной библиотеки, он обычно используется программистами вместе с Ruby on Rails, script.aculo.us и Rico.
Заявлено, что данный фреймворк поддерживается следующими браузерами: Internet Explorer 6.0+, Mozilla Firefox 1.5+, Apple Safari 2.0+ и Opera 9.25+.
13.3.1. Возможности
В Prototype присутствуют самые разные способы упрощения создания JavaScript-приложений, от сокращенного вызова некоторых функций языка до сложных методов обращения к XMLHttpRequest. Ниже приведены некоторые примеры.
13.3.1.1. Функция $()
Для обращения к DOM элементу HTML-страницы обычно используется функция:
document.getElementById:
document.getElementById("id_of_element")
Функция $() уменьшает код до [8]:
$("id_of_element")
Но в отличие от функции DOM, функции $() можно передавать более одного аргумента и функция вернет массив (Array) объектов со всеми соответствующими элементами:
var ar = $('id_1', 'id_2', 'id_3');
for (i = 0; i < ar.length; i++) {
alert(ar[i].innerHTML);
}
Например, для указания цвета текста можно использовать следующий код:
$("id_of_element").style.color = "#ffffff";
Или, используя расширенные функции Prototype:
$("id_of_element").setStyle({ color: '#ffffff' });
Код для версий ниже 1.5:
Element.setStyle("id_of_element", { color: "#ffffff" });
13.3.1.2. Функция $$()
Функция $$() используется для разделения CSS от контента. Она разбивает один или несколько CSS фильтров, которые поступают на вход в виде выражения подобного регулярному выражению и возвращает элементы, которые соответствуют этим фильтрам. Например, при выполнении данного скрипта:
var f = $$('div#block .inp');
получим массив, содержащий все элементы с классом .inp, которые находятся в контейнере div с идентификатором id="block".
13.3.1.3. Функция $F()
Похожая на $(), функция $F() возвращает значение определенного элемента HTML формы. Для текстового поля функция будет возвращать данные, содержащиеся в элементе. Для элемента "select" функция возвратит выбранное в текущий момент значение:
$F("id_of_input_element")
13.3.1.4. Функция $A()
Функция $A() преобразует один аргумент, который она получает, в объект Array. Эта функция, в сочетании с расширениями для класса Array, облегчает конвертирование или копирование любых перечислимых списков в объект Array. Один из вариантов использования заключается в том, чтобы преобразовать DOM NodeLists в регулярные массивы, которые могут быть более эффективно использованы.
13.3.1.5. Функция $H()
Функция $H() преобразовывает объекты в перечислимые Хэш-объекты, которые похожи на ассоциативный массив:
//Допустим имеем объект:
var hash = { method: post, type: 2, flag: t };
//При использовании функции:
var h = $H(hash);
//Получим:
alert(h.toQueryString());
//На экране будет отображено: post&type=2&flag=t
13.3.1.6. Объект Ajax
Объект Ajax предоставляет простые методы инициализации и работы с функцией XMLHttpRequest, без необходимости подстраивать код под нужный браузер. Существует два способа вызова объекта: Ajax.Request возвращает XML вывод AJAX-запроса, в то время как Ajax.Updater помещает ответ сервера в выбранную ветвь DOM.
Ajax.Request в примере ниже находит значения двух полей ввода, запрашивает страницу с сервера, используя значения в виде POST-запроса, а после завершения выполняет пользовательскую функцию showResponse():
var val1 = escape($F("name_of_id_1"));
var val2 = escape($F("name_of_id_2"));
var url = "http://yourserver/path/server_script";
var pars = { value1: val1, value2: val2 };
var myAjax = new Ajax.Request(
url,
{
method: "post",
parameters: pars,
onComplete: showResponse
});