Работа с фокусом

Важной особенностью браузеров является то, что с web-страницам и можно абсолютно полноценно работать и без мыши, при помощи одной клавиатуры. Достигается это во многом за счет так называемого фокуса. Фокус — это своеобразное выделение элемента, которое обозначается тонкой серой рамкой. В фокус можно поместить любой элемент, являющийся гиперссылкой, а также разного рода формы и меню. Чтобы задействовать находящуюся в фокусе ссылку, нужно нажать . Чтобы просмотреть выделенное меню, необходимо использовать клавиши движения.

Навести на элемент фокус можно несколькими способами. Во-первых, можно нажать нужное число раз клавишу <Таb>. При этом все выделяемые элементы будут последовательно помещены в фокус исходя из их положения в направлении сверху вниз и слева направо. Обход в обратном направлении осуществляется сочетанием + . Во-вторых, можно нажать <Таb> и переместиться к нужному элементу при помощи клавиш движения. Зачастую это более эффективно, нежели обход всех выделяемых элементов. В-третьих, навести фокус можно и программно, используя специальный метол JavaScript.

Flash — это прежде всего инструмент для создания сайтов. Трудно спорить с тем, что чем больше будет соответствовать изготовленная с его помощью страница ставшим традиционными правилам работы с HTML-сайтами, тем лучше.


В частности, должна быть предусмотрена и возможность навигации по ресурсу при помощи клавиатуры. Реализовать эту особенность совсем несложно благодаря тому, что элементы swf-ролика могут быть помешены в фокус.

По своим особенностям фокус flash-фильмов мало отличается от фокуса HTML-страниц. Он также наводится, схоже отображается, да и выполняет те же функции.

Поля ввода участвуют в Tab-обходе, подобно кнопкам, по умолчанию. Динамические же поля в принципе не могут быть помешены в цепочку обхода. Однако фокус на них может быть наведен программно, при помощи метода Selection.setFocus().

Когда поле ввода помещается в фокус, вокруг него, в отличие от кнопок и клипов, не отображается желтая рамка. Более того, режима ее визуализации у текстовых полей нет вообще (поэтому глобальное свойство _focusrect по отношению к ним не применимо). О том, что на поле был наведен фокус, говорит выделение всего его текста. Нажав , при этом можно удалить весь предыдущий текст и ввести другой. Если текст в поле должен быть лишь слегка отредактирован, необходимо переместить при помощи клавиш движения курсор ввода на нужный фрагмент и заменить его.

Вполне вероятна такая ситуация, что не все поля ввода в фильме должны будут участвовать в клавиатурном обходе.


Исключить поле из числа выделяемых можно, присвоив значение false свойству tabEnabled. Однако навести на такое поле фокус программно будет все равно возможно.

pole.tabEnabled = false; // Поле будет невыделяемым

По умолчанию порядок, в котором выделяемые элементы обходятся, зависит только от их положения. Это не всегда приемлемо. Например, в анкете может быть группа логически связанных полей, которые размешены не последовательно, а отдельным блоком. Обходиться поля блока должны строго друг за другом. Чтобы этого добиться, нужно использовать свойство tabIndex.

Свойство tabIndex хранит номер, под которым поле будет находиться в цепочке Tab-обхода. Отсчет элементов ведется с 1. Чем меньше номер объекта, тем раньше он окажется выделенным. При создании цепочки Tab-обхода при помощи свойств tabIndex все объекты, в нее не вошедшие, обходиться не будут.

Текстовое поле может быть помешено в фокус не только в результате клавиатурного обхода. Сделать это можно и средствами ActionScript, используя метод Selection.setFocus(pole), где pole — имя поля. Эта возможность полезна, например, если обход должен осуществляться нажатием пробела, а не клавиши <Таb> (или если поле ввода должно выделяться при наведении на него указателя мыши).

Текстовые поля являются листенерами двух событий, непосредственно связанных с наведением на них фокуса:

• onSetFocus — событие происходит, когда поле получает фокус.


В качестве параметра его функции-обработчику передается ссылка на объект, который фокус потерял;

• onKillFocus — событие возникает, если поле теряет фокус. Параметром его обработчика является ссылка на объект, который фокус получил.

События onSetFocus и on KillFoсus срабатывают вне зависимости оттого, как поле получило фокус — в результате клавиатурного обхода или при помощи метода Selection.setFocus(). Данные события можно использовать, например, для того, чтобы менять вид поля (увеличивать его. изменять цвет заднего фона или включать отображение рамки) при его выделении и возвращаться к исходным параметрам при потере фокуса.

Серьезным отличием Tab-обхода flash-сайтов по сравнению с НТМ L-страницами является то, что при этом в фокус не помещаются созданные в текстовых полях гиперссылки. Выделить нажатием клавиши <Таb> можно только поле целиком, да и то исключительно, если оно является полем ввода. Чтобы гиперссылки входили в цепочку клавиатурного обхода, их необходимо создавать в отдельных текстовых полях, а затем трансформировать последние в клипы.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела Action Script на эту тему:
Автоматическое удаление пробелов. Свойство condenseWhite
Встраивание в фильм целого шрифта
Динамическая замена выделенного текста. Метод replaceSel()
Динамическое задание выделения. Метод setSelection()
Задание и извлечение текста поля

Вернуться в раздел: Action Script / 13. Работа с текстом