тег | атрибут | свойство | стиль | ||
новые html-термины | line | aling | point | default | |
значения новых html-терминов | side | romb | |||
старые html-термины | td | id | list | ||
значения старых html-терминов | circle | ||||
коммуникационный xml | sound | sync | power | ||
значения коммуникационного xml | nouser | ||||
клавиатурные и мышиные команды | enter |
Изменения в документе представляют собой конечный автомат. Конечный автомат более удобно задать как некую матрицу, вместо того, чтобы писать функции JavaScript, выполняющие эти изменения на экране. Рассмотрим, как может быть записан конечный автомат для изменения стиля объектов в зависимости от нажатия пользователем тех или иных клавиш клавиатуры и кнопок мыши.
Пусть, например, имеется форум (пусть реплики будут элементами списка <li></li>).
В книжках делают закладки и пометки, но как сделать пометки здесь? Если вы проанализировали реплики и проранжировали их в 5 уровней (важно, задуматься, обычное, бестолково, вредно), то было бы удобно, чтобы "важно" были написаны красным, "задуматься" - оранжевым, "обычное" - зеленым, "бестолково" - черным, "вредно" - бледно-серым (серебряным).
Как же подобные изменения произвести в окне браузера и отправить на сервер? Если расположить рядом с каждой репликой набор радио-кнопок (кругленьких, с черной точечкой внутри), то это захламляет страницу, не нравится пользователю.
Предлагаю кликать мышкой непосредственно на репликах: щелчок - поднять статус реплики на один уровень, двойной щелчок - опустить на один.
Определим в CSS-файле стили для наших реплик. Эти стили могут иметь разные цвета, размеры шрифта и т.д.
Одиночный щелчек левой клавишей мыши подает команду enter, двойной щелчек левой клавишей мыши подает команду bksp. Таблица переходов выглядит так
Если разные теги используют одни и те же стили, то они выполнят одни и те же превращения.
Строка таблицы состоит из следующих полей (колонок)
Поля отделены друг от друга пробелом. Каждое поле может состоять из нескольких слов, перечисленных через запятую. Слова одного поля следуют в произвольном порядке.
Возможно указание нескольких состояний через запятую.
Произвольное состояние обозначается знаком "запятая".
Стиль, который использует браузер по умолчанию
(когда отсутствует тег class
) для
не выделенного объекта называется default.
Например, переход из default-состояния выглядит так
Незаполненное поле "новое состояние" изменяет прежний стиль на стиль default.
Возможно указание нескольких команд через запятую.
Запишем все таблицы соответствия в отдельный файл,
например, "a.txt", и добавим внутрь тега
head
следующий тег
Пусть один тег (А) вложен в другой (В), в Transition Sheet определен переход для объекта "В", и пользователь послан команду (например, click или double click) на вложенном объекте (А). Если в Transition Sheet переход для объекта "A"
Цвета (и только цвета) могут двигаться плавно.
В случаях, когда необходимо, чтобы цвет изменялся не скачком, а плавно, в течение некоторого промежутка времени, используется свойство time, который определяет за сколько секунд должно произойти изменение.
Теги <li> могут быть расположены внутри тега form
,
при этом их атрибуты name
должны быть определены
(в примере ниже - в значение A).
Одинарный или двойной щелчек мышкой приводит к формированию с следующего XML-текста
(далее такие xml-теги будем называть действиями).
<obj name=A cmd=cmd_name os=old_class_name ns=new_class_name> |
Форма отправляется немедленно, без нажатия на кнопку "submit" в одном из двух случаев
input
type
=submit>В любом случае отправляются результаты сразу всех операций мышью, выполненных с момента последней отправки.
Для того, чтобы еще до отправки по нажатию кнопки "submit" пользователь знал в каком состоянии находятся объекты формы, новые состояния объектов отображаются новым стилем.
Если для нового состояния в css-файле не найден стиль, то смысл щелканья мышью другой: это выбор некоторой операции "operation_name". Немедленно отправляется XML-текст
<obj name=A cmd=cmd_name os=old_class_name ns=operation_name> |
Любая команда (или комбинация команд) записывается в поле "команда" в Transition Sheet. Если команд (или комбинаций) несколько, то они перечисляются в этом поле через запятую.
Если команда вызвана на невыделенном объекте, то она выполняется только одним этим объектом. Если команда вызвана на одном из выделенных объектов, то она выполняется всеми выделенными объектами (конечный стиль каждого объекта зависит от его начального стиля).
В том случае, если для конечного состояния не определен стиль в css-файле, то конечное состояние интерпретируется как название операции, и браузер немедленно отправляет все накопившиеся к этому моменту действия.
Клавиатурный курсор отменяется - существует только мышиный курсор.
Команды бывают зарезервированные браузером и придуманные пользователем (например он может придумать команды cool, fine). Зарезервированные команды могут быть вызваны как непосредственно клавиатурой или мышью, так и из меню, пользовательские команды могут быть вызваны только из меню.
Можно использовать комбинация зарезервированных команд.
мышиные | клавиатурные | |
левая клавиша | правая клавиша | |
enter, bksp, drag, drop, ins | enter, bksp, любая буква |
form
).
Команда имеет предопределенные последствия -
выделение объекта.Клавиатурные команды - это одновременное нажатие одной или нескольких следующих клавиш:
Все комбинации с функциональными клавишами ctrl и alt (не являющимися командами) предназначены не для программиста документа, а для управления браузером. Такое разделение позволяет создавать html-документы, которые будут способны работать в будущих версиях браузера.
Команда enter, вызванная для некоторых объектов, дает предопределенные последствия.
input
type =submit> | отправить форму |
a | перейти по ссылке |
Если пользователь вывозет bksp во время загрузки документа, то остановится загрузка, а если во время выполнения модуля - остановится выполнение модуля.
Клавиша space (не являющаяся командой) осуществляет drag-and-drop объекта под курсором мыши и посылает две команды: первое нажатие - drag (затем движение курсора клавишами-стрелками), второе нажатие - drop, после второго нажатия подаются команды "drag" и "drop" соответствующим объектам.
Команда h обычно используется для вызова справки для объекта под курсором мыши (h=help).
Воспользуемся конструкциями
<select
><optgroup
><option
>,
<input
type
=radio>,
<input
type
=checkbox>.
В атрибуте id
тега <select
>
укажем название меню;
в атрибуте value
укажем название команды,
которую должно применить к объекту
Атрибут src
со значением
"site/~user/^service/path/filename" тега option
указывает изображение,
которое должно быть использовано в качестве маркера элементов выпадающего списка.
На меню распространяется действие css-файлов.
Объект ссылается в атрибуте menu на необходимое ему меню, т.е.
Запишем все меню в отдельный файл,
например, "a.txt", и добавим внутрь тега
head
следующий тег
Когда курсор между виджетами, то клавиша ctrl вызывает контекстное меню (меню для объекта под курсором мыши). Когда курсор в виджете, то эта клавиша вызывает меню для виджета.
enter, bksp |
тег | атрибут | список возможных значений |
link |
type |
transition, menu |
любой | menu | id of input-select |
<input
type =select> |
src |
site/~user/^service/path/filename |
тег | свойство | значение по умолчанию | единицы измерения |
любой | time | 0 | sec |
тег | стиль |
любой | default |
<obj name= cmd= os= ns= > |
html60author