Следует ли уделять внимание элементу управления после завершения загрузки веб-страницы? - PullRequest
8 голосов
/ 30 марта 2009

Вот несколько примеров того, что я имею в виду:

google.com - фокус установлен на поле «поиск»

gmail.google.com - фокус устанавливается на поле «имя пользователя» (на самом деле, большинство веб-почтовых клиентов делают это).

stackoverflow, задайте вопрос - фокус установлен на поле «заголовок».

Иногда это удобная функция - например, в Google. Тем не менее, с точки зрения удобства использования, действительно ли это считается хорошей функцией на страницах входа?

Лично я часто вводил свое имя пользователя, начинал вводить пароль, затем страница заканчивала загрузку, и фокус снова возвращался в поле имени пользователя. К сожалению, поскольку у меня есть сложные пароли, которые заставляют меня смотреть на клавиатуру во время набора текста, я не замечаю, когда фокус смещается. Я часто заканчиваю вводить свой пароль в поле имени пользователя без масок, чтобы кто-нибудь, стоящий позади меня, мог видеть.

Другая ситуация, менее опасная, но все же раздражающая, - это когда я набираю URL в адресной строке, когда домашняя страница все еще загружается. Однако, как только он закончится, и если я не закончу вводить URL, у меня украдут фокус и положат на какое-то другое поле.

Должны ли веб-сайты и / или браузеры быть запрограммированы так, чтобы фокус не изменился, если пользователь уже взаимодействует с сайтом или браузером? Беспокоят ли подобные проблемы обычных (то есть, не программистов) пользователей?

Ответы [ 6 ]

3 голосов
/ 30 марта 2009

Это действительно два отдельных вопроса с разными ответами:

В: Нужно ли фокусироваться на поле ввода, которое пользователь, скорее всего, будет использовать?

A: Определенно да, если «большинство пользователей» на самом деле составляет 90% или более.

В: Должно ли это произойти, когда веб-страница завершит загрузку?

A: Нет. Событие "onLoad" - довольно глупое место для этого. Поле ввода должно получить фокус, как только оно появится - обычно оно совершенно не имеет значения, когда страница завершает загрузку. Просто поместите тег <script>, который устанавливает фокус сразу после самого элемента ввода.

3 голосов
/ 30 марта 2009

Лично я ненавижу, когда веб-сайты принимают фокус. Основная причина в том, что на моем ноутбуке, если я использую трекпад и нажимаю клавишу Backspace, он автоматически возвращается на предыдущую страницу. Если фокус был помещен в текстовое поле, он будет обрабатывать клавишу возврата как то, что я пытаюсь удалить символ.

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

2 голосов
/ 30 марта 2009

То же самое случилось со мной в Gmail, я нахожу это немного раздражающим, тем более что должно легко обойти: В обработчике события OnLoad проверьте, содержат ли поля ввода (имя пользователя или пароль) текст. Если это так, не меняйте фокус.

Как и во всех простых решениях, я не удивлюсь, если будут какие-то странные побочные эффекты, которые делают его непрактичным, но я все равно попробую. О, и если это работает, почему бы вам не отправить электронное письмо в Google? ; -)

При этом я считаю это поведение usability glitch, что-то, что не является ошибкой, но немного раздражает. Не раздражайте своих клиентов. Исправь это.

1 голос
/ 30 марта 2009

Да, фокус должен по умолчанию указывать наиболее вероятное место, откуда пользователь может начать печатать. Не делать этого - плохой дизайн интерфейса учебника.

Когда дефолт фокуса мешает тому, что вы уже делаете, это не является неотъемлемой проблемой дефолта фокуса, это отказ неадекватной реализации. Это, среди прочих причин, является причиной того, что я собрал универсальный «умный» скрипт автофокуса , который делает такие вещи, как оставление вас в аду, если вы уже начали печатать.

(Да, я знаю, что это волосатое тело. Большая часть волосатости связана с кросс-браузерными проблемами - фактически, с ошибкой Firefox.)

1 голос
/ 30 марта 2009

Есть сайты, где у вас есть один случай использования, для которого обычный пользователь использует клавиатуру ( обычный пользователь - некоторые, как я, используют клавиатуру для навигации). Такие сайты, как поиск Google, на самом деле ожидают, что вы просто введете то, что ищете, и нажмете enter.

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

Лично я не вижу смены фокуса, когда сайт заканчивает загрузку, как проблему, а не для обычного пользователя. Но, как я уже упоминал, если это действительно полезно, вопрос в том, какой вариант использования в вашем конкретном приложении. И это может быть вопросом показа приложения на его бета-стадии некоторым людям и выполнения юзабилити-тестов.

1 голос
/ 30 марта 2009

Я думаю, что только у нас, программистов, есть привычка печатать еще до загрузки страницы ;-) Большинство моих друзей, не являющихся программистами, ждут, пока они не увидят сигнал «Завершено» в зоне загрузки.

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

«Должны ли веб-сайты и / или браузеры быть запрограммированы так, чтобы фокус не изменился, если пользователь уже взаимодействует с сайтом или браузером?»

Я думаю, что браузеры должны быть включены для этого, чем веб-сайты. Потому что это будет еще одна поездка обратно на сервер и может быть неприятно для соединений с низкой скоростью.

В целом, я думаю, что это просто еще одна незначительная проблема / раздражение, с которым мы можем жить. Как я уже сказал, только мы, программисты, набираем текст даже до загрузки страницы. Большинство моих друзей не знают, что они могут печатать до загрузки страницы:)

...