Содержание

Кнопка назад на сайте

Если вам понравилась статья, вы можете отблагодарить автора любой суммой, какую сочтете для себя приемлемой:

3D фотоэффект изображения на JavaScript

В этом уроке вы узнаете, как создать иллюзию трехмерной фотографии из изображения, используя JavaScript и библиотеку Pixi.js webGL. Давайте сделаем это! Концепция Чтобы превратить обычную фотографию в 3D, нам нужно использовать карту глубины (или некоторые назвали бы карту смещения или Читать далее

Фильтрация и сортировка на JS с помощью библиотеки MixItUp

MixItUp — это высокопроизводительная библиотека без зависимостей, для анимированных манипуляций с DOM, которая дает вам возможность фильтровать, сортировать, добавлять и удалять элементы DOM с красивой анимацией. MixItUp прекрасно сочетается с вашими существующими HTML и CSS, что делает её отличным выбором Читать далее

Автоопределение города по IP на сайте

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

Яндекс карта с управлением для сайта

Создать карту в конструкторе Яндекс карт наверное самый простой и быстрый способ, когда надо добавить местоположение на сайте. Но если нужно сделать карту с внешними элементами управления, то конструктора здесь окажется мало. Самый распространенный пример, когда есть несколько офисов компании, Читать далее

Подключение jQuery

jQuery — это быстрая, небольшая и многофункциональная библиотека JavaScript, включенная в один файл .js. На данный момент это самая популярная библиотека JavaScript. JQuery облегчает жизнь веб-разработчика. Библиотека предоставляет множество встроенных функций, с помощью которых вы можете легко и быстро выполнять Читать далее

Модальное окно Bootstrap: использование и настройка

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

Живой поиск jQuery

Сегодня я расскажу об одном отличном jQuery плагине о котором вы могли не знать. С его помощью можно быстро сделать живой поиск на странице сайта с множеством элементов. Называется он HideSeek. Плагин очень прост в использовании, но в то же Читать далее

HTML кнопка – незаменимый помощник для навигации по сайту

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

Обычно такой порядок называется дружественным (интуитивно понятным) интерфейсом. Html кнопка – это просто незаменимое средство для наведения порядка на сайте и организации дружественного интерфейса.

Кнопки для сайта HTML создаются одним из двух способов:

1. С помощью тега input. Синтаксис такой команды выглядит следующим образом:

<input type="button" value=надпись на кнопке>

2. С помощью тега button:

<button>Надпись на кнопке</button>

Пример кода, который выполняет создание кнопки в <b>html</b> сразу двумя этими способами:

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>Кнопка</title>
 </head>
 <body> 
  <form>
   <p><input type="button" value=" Кнопочка1 "></p>
   <p><button>Кнопочка2</button></p>
  </form>
 </body>
</html>

В результате получаются две одинаковые кнопки:

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

Разница между двумя методами состоит лишь в том, что при использовании тега button – вы можете поместить в контейнер свой набор в виде картинки и текста, и это все будет активно, а при использовании тега input возможно будет использовать либо только картинку, либо только текст.

Но при этом старые версии браузера Internet Explorer могут неправильно отображать современный тег button.

Кнопка со ссылкой HTML (например, кнопка наверх для сайта html или кнопка назад html) может быть создана с помощью ссылок «якорей». Обычный «якорь» имеет следующий вид:

Такой «якорь» невидим и может быть поставлен в любом месте, в котором вы считаете нужным. Для того чтобы перейти к «якорю», используется следующая команда:

<a href="#имя якоря">название кнопки</a>

Нажатие на название кнопки, моментально переводит курсор к «якорю».
Допустим, нам нужно, чтобы внизу сайта стояла кнопка перехода на начало, а в начале – для перехода вниз:

<!DOCTYPE html>
<html>
 <head>
    <title>Якорь</title>
 </head>
 <body> 
  <form>
   <a name="top"></a>
   <p><a href="#end">вниз</a></p>
…
   <p><a href="#top">вверх</a></p>
…
   <a name="end"></a>
  </form>
 </body>
</html>

Выглядит это следующим образом:

Кнопки типа Submit существуют для отправки информации, введённой посетителем сайта, на сервер. Например, простейшая организация ввода пароля выглядит так:

<p><input name="login"></p>
<p><input type="submit"></p>

Кнопки типа Reset предназначены для обновления данных форм (возврата их в первоначальное состояние). Для того чтобы создать такую кнопку, следует использовать следующий код:

<input type="reset" value="Название кнопки">

В HTML кнопки можно украшать какими-либо картинками. Для этого достаточно использовать следующий код:

<input type="image" src="ссылка на картинку">"

Кнопка с картинкой и текстом:

<button> <img alt="" src="ссылка на картинку" />Нажмите, чтобы посмеяться</button>

Например:

Таким образом, при создании кнопок HTML можно проявить свою выдумку: любые дизайнерские фантазии реализуются написанием достаточно простого кода.

Удачи!

АРАлина Рыбакавтор

Не удается найти страницу | Autodesk Knowledge Network

(* {{l10n_strings.REQUIRED_FIELD}})

{{l10n_strings.CREATE_NEW_COLLECTION}}*

{{l10n_strings.ADD_COLLECTION_DESCRIPTION}}

{{l10n_strings.COLLECTION_DESCRIPTION}} {{addToCollection.description.length}}/500 {{l10n_strings.TAGS}} {{$item}} {{l10n_strings.PRODUCTS}} {{l10n_strings.DRAG_TEXT}}  

{{l10n_strings.DRAG_TEXT_HELP}}

{{l10n_strings.LANGUAGE}} {{$select.selected.display}}

{{article.content_lang.display}}

{{l10n_strings.AUTHOR}}  

{{l10n_strings.AUTHOR_TOOLTIP_TEXT}}

{{$select.selected.display}} {{l10n_strings.CREATE_AND_ADD_TO_COLLECTION_MODAL_BUTTON}} {{l10n_strings.CREATE_A_COLLECTION_ERROR}}

В iOS 14 появился удобный механизм возврата в приложениях. Как пользоваться

Apple, как никто другой, умеет делать удобную продукцию. Мне кажется, всё дело в том, что она уделяет огромное внимание даже незначительным, на первый взгляд, аспектам. Чего только стоит возврат к началу страницы по нажатию на верхнюю часть экрана или удобный скроллер для быстрого перемещения по веб-странице. А кнопка возврата в предыдущее приложение, из которого вы только что вышли? Это же настоящий шедевр, особенно на устройствах без жестового управления вроде iPhone SE или iPad. Но в iOS 14 разработчики Apple зашли ещё дальше в обеспечении удобства использования и представили новый механизм навигации.

Кнопка возврата позволяет выбрать раздел, в который вы хотите вернуться

Почему приложение запрашивает разрешение на поиск устройств в локальной сети в iOS 14

Честно говоря, обнаружить этот механизм специально довольно сложно. О нём можно либо узнать от кого-то, либо найти его чисто случайно. Ведь, говоря откровенно, никто в здравом уме не станет нарочно тыкать в ставшие привычными элементами, чтобы отыскать в них проявления новых возможностей. А, между тем, иногда в них всё-таки попадается кое-что совсем нетипичное.

Как вернуться назад на iOS

Выпадающее окно появляется при удерживании стрелки возврата

Новый механизм, о котором идёт речь, состоит в облегчении навигации по операционной системе и используемому софту. Проще всего принцип его работы будет объяснить на примере приложения «Настройки». Там, как известно, предусмотрено несколько подуровней, когда пользователь переходит из одной вкладки в другую, потом в третью и иногда даже в четвёртую. А, чтобы выйти оттуда, нужно было либо нажать на кнопку домой (на устройствах с поддержкой жестов свайпнуть вверх) либо нажимать на кнопку возврата, которая неизменно присутствует в левом верхнем углу.

Спорим, не знали? На iOS 14 можно запускать игры в браузере без установки

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

Возврат назад в приложениях на iOS

А так механизм работает в Safari, позволяя перемещаться не только назад, но и вперёд

Но если по настройкам вам, скорее всего, приходится путешествовать туда-сюда не очень часто, то вот перемещаться между страницами в браузере наверняка доводится. Там, к счастью, удобный механизм возврата тоже работает. Для его активации, как и в «Настройках» нужно нажать на кнопку возврата и удерживать до появления окна с выпадающим меню. Оно предложит все предыдущие страницы, которые вам пришлось открыть, чтобы попасть на текущую. Правда, применять данный механизм удобно для переключения между открытыми вкладками в пределах одного сайта.

Как включить режим «картинка в картинке» на iOS 14

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

А это приложения Википедии и IMDb

  • App Store
  • Books
  • Календарь
  • Часы
  • FaceTime
  • Файлы
  • Почта
  • Apple Music
  • Заметки
  • Телефон
  • Фото
  • Подкасты

Что делать если iPhone и Apple Watch быстро разряжаются на iOS 14

Сторонних приложений, поддерживающих это нововведение, пока не так много. Однако Apple предоставляет разработчикам возможность по интеграции механизма в любые типы софта благодаря распространению фреймворка UIMenu. Всё, что требуется от разработчика, это найти применение нововведению, а потом добавить в его код нужный компонент. Это уже сделали разработчики приложений Wikipedia, IMDb и Documents. Возможно, есть и другие, но их я не проверял.

Как включить или убрать кнопку «Домой» с экрана Android

Мобильная операционная система Android больше всего ценится пользователями за удобство работы и гибкость, благодаря которой платформу можно полностью адаптировать под собственные потребности. При этом многие даже не догадываются обо всех возможностях, предлагаемых ОС. Например, интерактивная кнопка Home выполняет не только функцию возврата в главное меню, для чего в основном и применяется, её можно задействовать и под другие задачи.

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

Рассмотрим, как вернуть кнопки на экран или убрать их, а также расскажем о возможностях кнопки «Home», о которых вы могли не знать.

Что такое виртуальные кнопки на смартфоне

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

Отличие от физических клавиш управления смартфоном

Управление девайсом осуществляется за счёт механических и программных элементов. Что касается первых, то на корпусе мобильных девайсов – это кнопка питания, качающаяся клавиша громкости, реже можно встретить реализованную таким способом клавишу «Home». Программных клавиш обычно три:

  • «Домой» – позволяет вернуться в основное меню или на главный экран, при этом ранее открытое приложение остаётся в памяти девайса и продолжает работу в фоне, а также выполняет ряд других опций (об этом ниже).
  • «Назад» – клавиша возвращает на предыдущую страницу, путём последовательных нажатий позволяет вернуться на несколько предыдущих экранов и закрыть приложение, причём софт в этом случае выгружается из оперативной памяти.
  • «Последние приложения» – удобно использовать клавишу в случае необходимости быстро перейти к используемым в недавнем времени приложениям.

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

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

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

Сказать однозначно, какое решение будет лучшим, виртуальные или физические кнопки, нельзя, поскольку это скорее вопрос удобства и здесь всё индивидуально.

Настойка кнопок «Домой» и «Назад»

Как подключить виртуальные кнопки

Если клавиши были просто скрыты, что выполняется в настройках устройства, то для их возвращения идём в «Настройки» – «Панель навигации» в разделе «Система» и напротив пункта «Скрыть панель навигации» перемещаем тумблер в неактивное положение. На разных моделях девайсов меню может отличаться, например, чтобы в смартфоне Xiaomi заменить экранные кнопки управлением жестами, нужно перейти в «Настройки» – «Безграничный экран» в блоке «Система и устройство». А для возвращения виртуальных клавиш здесь же в меню нужно выбрать «Кнопки навигации» и они появятся на экране.

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

Виртуальные кнопки могут пропасть в результате обновления прошивки или по другим программным либо аппаратным причинам. Их можно снова вывести на экран и есть несколько способов это сделать с root-правами и без. Некоторые кастомные версии Android позволяют включить навигационную панель через настройки, в других можно модифицировать framework-res.apk из папки system\ framework.

Настройка кнопок в программе Button Mapper

Как включить кнопку «Домой» и другие навигационные клавиши на Android средствами системы

Данный способ подразумевает наличие root-прав на устройстве. В операционной системе Android имеется отладочная переменная qemu.hw.mainkeys, при помощи которой можно управлять видимостью клавиш навигации на экране.

Чтобы включить кнопки, выполняем следующие действия:

  • Открываем файловый менеджер Root Explorer и активируем в нём показ скрытых элементов.
  • В папке System открываем через текстовый редактор файл build.prop.
  • В последней строке выставляем qemu.hw.mainkeys=0 (запись переменной со значением «0» подразумевает показ кнопок на экране, при значении «1» они уберутся).
  • Перезагружаем устройство, после чего в нижней части экрана появится активная полоска с клавишами навигации.

Как вернуть кнопку «Домой» на Android с использованием приложений

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

Среди приложений, используемых с целью возврата и настройки виртуальных клавиш, популярностью пользуются Assistive Touch, Navigation bar, Full Screen Toggle, Back Button (No root) и прочие продуты. Устанавливается такой софт стандартным способом из Google Play или из других надёжных источников в формате APK. Обычно ПО данной категории обладает достаточно широким функционалом и позволяет не только включить/выключить навигационную панель или отдельные кнопки, но и выполнить настройку, сменить темы оформления, получить плавающую «Home» и т. д.

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

Как вернуть пропавшие элементы навигации после обновления прошивки

Пользователи сталкивались с исчезновением кнопки «Домой» и других элементов навигации, в том числе и шторки уведомлений, после обновления Android. Способ исправления бага предполагает использование компьютера с установленными USB-драйверами и Android SDK (нам потребуется программа ADB). Выполняем следующие шаги:

  • Посредством USB-соединения обеспечиваем подключение Android-устройства к ПК или ноутбуку.
  • Запускаем окно командной строки и прописываем здесь команду adb shell am start -n com.google.android.setupwizard/.SetupWizardTestActivity.
  • В результате на экране мобильного девайса появится окно первого запуска. Пользователю будет предложено выбрать язык и присоединиться Google Now. Далее появится рабочий стол.
  • Перезагружаем устройство. Исчезнувшие инструменты навигации вернутся на место.

Изменение кнопок через программу Swipe Home Button

Как убрать кнопку «Home» с экрана Android

В смартфонах Honor и Huawei настройки позволяют скрывать интерактивную кнопку «Home», для чего нужно выполнить следующее:

  • Идём по пути «Настройки» – «Система» – «Системная навигация».
  • Открываем настройки навигационной кнопки.
  • Теперь нужно перевести тумблер в неактивное положение, после чего «Home» на экране Android-устройства уже не будет. Чтобы вернуть интерактивный элемент, нужно проследовать тем же путём и перевести ползунок в положение включения.

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

Элемент навигации «Home», расположенный вместе с другими интерактивными клавишами, можно скрыть с экрана Android, используя системные настройки девайса. Один и вариантов, как убрать «Домой», предполагает следующие действия:

  • Идём в «Настройки» – «Расширенные настройки».
  • На вкладке «Кнопки и жесты» напротив пункта «Скрыть экранные кнопки» перемещаем тумблер в неактивное положение.

В зависимости от оболочки меню отличается, на некоторых девайсах в настройках нужно перейти в раздел «Панель навигации» и аналогичным образом перевести ползунок в соответствующем пункте.

Альтернативный вариант, позволяющий отключить кнопку «Home» на Android и/или соседствующие элементов встроенной навигации – применение Xposed Framework.

Дополнительные возможности кнопки «Home»

Наиболее часто «Домой», как и следует из названия клавиши, используется для возврата в основное меню или на главный экран, но она способна и на другие действия:

  • Длительное нажатие может вызывать поиск Google или голосового помощника с новостной лентой (работает на большинстве устройств под управлением Android).
  • Двойным нажатием по клавише «Home» вызывается список запущенных приложений, действие также позволяет увидеть пять часто используемых программ (работает преимущественно на Google Pixel).
  • Если нажать на «Home» и быстро провести в сторону клавиши «Назад», появится возможность переключаться между последними открытыми программами (работает на девайсах Самсунг).
  • Для быстрого переключения между двумя последними программами «Home» нужно зажать и быстро провести вправо или влево.

Кроме того, посредством сторонних приложений есть возможность настроить кнопку «Домой» на Android на выполнение других задач. Например, можно воспользоваться софтом «Переназначение клавиш», для использования большинства опций root-права не требуются.

HTML и CSS с примерами кода

Тег <button> (от англ. button — кнопка) создаёт на веб-странице кнопки и по своему действию напоминает результат, получаемый с помощью <input> (с атрибутом type="button | reset | submit").

В отличие от этого элемента, <button> предлагает расширенные возможности по созданию кнопок. Например, на подобной кнопке можно размещать любые элементы HTML, в том числе изображения. Используя стили можно определить вид кнопки путём изменения шрифта, цвета фона, размеров и других параметров.

Формы

Синтаксис

Закрывающий тег обязателен.

Атрибуты

autofocus
Устанавливает, что кнопка получает фокус после загрузки страницы.
disabled
Блокирует доступ и изменение элемента.
form
Связывает между собой форму и кнопку.
formaction
Задаёт адрес, на который пересылаются данные формы при нажатии на кнопку.
formenctype
Способ кодирования данных формы.
formmethod
Указывает метод пересылки данных формы.
formnovalidate
Отменяет проверку формы на корректность.
formtarget
Открывает результат отправки формы в новом окне или фрейме.
name
Определяет уникальное имя кнопки.
type
Устанавливает тип кнопки: обычная; для отправки данных формы на сервер; для очистки формы.
value
Значение кнопки, которое будет отправлено на сервер или прочитано с помощью скриптов.

Также для этого тега доступны универсальные атрибуты.

autofocus

Атрибут autofocus устанавливает, что кнопка получает фокус после загрузки страницы. Такую кнопку можно нажать сразу без перевода на неё фокуса, например, с помощью клавиатуры.

Синтаксис

<button autofocus>...</button>

Значения

Нет.

Значение по умолчанию

По умолчанию это значение выключено.

disabled

Блокирует доступ к кнопке и её изменение. Она в таком случае отображается серым цветом и недоступна для активации пользователем. Кроме того, такая кнопка не может получить фокус путём нажатия на клавишу Tab, мышью или другим способом. Тем не менее, такое состояние кнопки можно изменять через скрипты. Значение блокированной кнопки не передаётся на сервер.

Синтаксис

<button disabled>...</button>

Значения

Нет.

Значение по умолчанию

По умолчанию это значение выключено.

form

Связывает кнопку с формой по её идентификатору. Такая связь необходима в случае, когда кнопка не располагается внутри элемента <form>, например, при создании её программно.

Синтаксис

<button form="<идентификатор>">...</button>

Значения

Идентификатор формы (значение атрибута id элемента <form>).

Значение по умолчанию

Нет.

formaction

Определяет адрес обработчика формы — это программа, которая получает данные формы и производит с ними желаемые действия. Атрибут formaction по своему действию аналогичен атрибуту

action элемента <form>. Если одновременно указать action и formaction, то при нажатии на кнопку атрибут action игнорируется и данные пересылаются по адресу, указанному в formaction.

Синтаксис

<button formaction="<адрес>">...</button>

Значения

Нет.

formenctype

Устанавливает способ кодирования данных формы при их отправке на сервер. Обычно явно указывается в случае, когда используется поле для отправки файла (input type="file"). Этот атрибут по своему действию аналогичен атрибуту enctype элемента <form>.

Синтаксис

<button
  formenctype="application/x-www-form-urlencoded | multipart/form-data | text/plain"
>
  ...
</button>

Значения

application/x-www-form-urlencoded
Вместо пробелов ставится +, символы вроде русских букв кодируются их шестнадцатеричными значениями (например, %D0%9F%D0%B5%D1%82%D1%8F вместо Петя).
multipart/form-data
Данные не кодируются. Это значение применяется при отправке файлов.
text/plain
Пробелы заменяются знаком +, буквы и другие символы не кодируются.

Значение по умолчанию

  • application/x-www-form-urlencoded

formmethod

Атрибут сообщает браузеру, каким методом следует передавать данные формы на сервер.

Синтаксис

<button formmethod="get | post">...</button>

Значения

Различают два метода — GET и POST.

GET
Этот метод предназначен для передачи данных формы непосредственно в адресной строке в виде пар «имя=значение», которые добавляются к адресу страницы после вопросительного знака и разделяются между собой амперсандом (символ &). Полный адрес к примеру будет http://site.ru/doc/?name=Vasya&password=pup. Объём данных в методе ограничен 4 Кб.
POST
Посылает на сервер данные в запросе браузера, объём пересылаемых данных ограничен лишь настройками сервера.

formnovalidate

Отменяет встроенную проверку данных введённых пользователем в форме на корректность при нажатии на кнопку. Такая проверка делается браузером автоматически при отправке формы на сервер для полей <input type="email">, <input type="url">, а также при наличии атрибута pattern или required у элемента <input>.

Синтаксис

<button formnovalidate>...</button>

Значения

Нет.

Значение по умолчанию

По умолчанию этот атрибут выключен.

formtarget

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

Синтаксис

<button
  formtarget="<имя фрейма> | _blank | _self | _parent | _top"
>
  ...
</button>

Значения

В качестве значения используется имя фрейма, заданное атрибутом name элемента <iframe>. Если установлено несуществующее имя, то будет открыта новая вкладка. В качестве зарезервированных значений можно указывать следующие.

_blank
Загружает страницу в новую вкладку браузера.
_self
Загружает страницу в текущую вкладку.
_parent
Загружает страницу во фрейм-родитель; если фреймов нет, то это значение работает как _self.
_top
Отменяет все фреймы и загружает страницу в полном окне браузера; если фреймов нет, то это значение работает как _self.

name

Определяет уникальное имя кнопки. Как правило, это имя используется при отправке значения кнопки на сервер или для доступа к кнопке через скрипты.

Синтаксис

<button name="<имя>">...</button>

Значения

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

Значение по умолчанию

Нет.

type

Определяет тип кнопки, который устанавливает её поведение в форме. По внешнему виду кнопки разного типа никак не различаются, но у каждой такой кнопки свои функции.

Синтаксис

<button type="button | reset | submit">...</button>

Значения

button
Обычная кнопка.
reset
Кнопка для очистки введённых данных формы и возвращения значений в первоначальное состояние.
submit
Кнопка для отправки данных формы на сервер.
menu
Открывает меню, созданное с помощью элемента <menu>.

Значение по умолчанию

value

Определяет значение кнопки, которое будет отправлено на сервер. На сервер отправляется пара «имя=значение», где имя задаётся атрибутом name элемента <button>, а значение — атрибутом value. Значение может как совпадать с текстом на кнопке, так быть и самостоятельным. Также атрибут value применяется для доступа к данным через скрипты.

Синтаксис

<button value="<текст>">...</button>

Значения

Любая текстовая строка.

Значение по умолчанию

Нет.

Спецификации

Описание и примеры

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>BUTTON</title>
  </head>
  <body>
    <p>
      <button>Кнопка с текстом</button>
      <button>
        <img
          src="image/umbrella.gif"
          alt="Зонтик"
         
        />
        Кнопка с рисунком
      </button>
    </p>
  </body>
</html>

Ссылки

Введение в JavaServer Faces 2.x

Начните работу с открытия проекта веб-приложения jsfDemo в среде IDE. После открытия проекта в среде IDE в него можно добавить поддержку платформы с помощью окна «Свойства» в проекте.

  1. Нажмите кнопку ‘Открыть проект’ ( ) на главной панели инструментов IDE или нажмите Ctrl-Shift-O (⌘-Shift-O в Mac).

  2. В диалоговом окне «Открытие проекта» перейдите к папке на компьютере, в которой хранится разархивированный файл учебного проекта. Выберите его, а затем для открытия проекта в среде IDE нажмите кнопку «Открыть проект».

Примечание. При открытии проекта NetBeans может быть отображен запрос на разрешение ссылки на библиотеки JUnit, если при установке IDE не был установлен подключаемый модуль JUnit.

  1. Выполните проект и посмотрите, как он выглядит в браузере. Либо щелкните правой кнопкой мыши узел проекта jsfDemo в окне ‘Проекты’ и выберите ‘Запустить’ или нажмите кнопку ‘Запустить проект’ ( ) на главной панели инструментов. Проект запакован и разворачивается на сервере GlassFish, а в браузере открывается страница приветствия(index.xhtml).

Figure 2. Запустите проект, чтобы просмотреть его в браузере.

  1. Нажмите кнопку «Отправить». Страница ответа (response.xhtml) отображается следующим образом:

Figure 3. Страницы приветствия и отклика в настоящее время являются статическими страницами

В настоящее время страницы приветствия и отклика являются статическими, и совместно с файлом stylesheet.css и изображением duke.png они являются единственными файлами приложений, доступными из браузера.

  1. В окне ‘Проекты’ (Ctrl-1; ⌘ -1 в Mac) щелкните правой кнопкой мыши узел проекта и выберите ‘Свойства’, чтобы открыть окно ‘Свойства проекта’.

  2. Выберите категорию ‘Платформы’, а затем нажмите кнопку ‘Добавить’.

  3. Выберите ‘JavaServer Faces’ в диалоговом окне ‘Добавление платформы’. Нажмите кнопку ‘ОК’.

Figure 4. Добавление поддержки JSF к существующему проекту

После выбора «JavaServer Faces» станут доступными различные параметры настройки. На вкладке ‘Библиотеки’ вы можете указать, как проект обращается к библиотекам JSF 2.x. Доступная версия JSF будет зависеть от версии IDE и сервера GlassFish. По умолчанию используются библиотеки, поставляемые с сервером (сервером GlassFish). Тем не менее, в IDE также входят библиотеки JSF 2.x. (Можно выбрать параметр «Зарегистрированные библиотеки», если их необходимо использовать в проекте).

Figure 5. Укажите доступ к библиотекам JSF 2.x

  1. Выберите вкладку «Настройка». Можно указать способ регистрации сервлета Faces в дескрипторе развертывания проекта. Также можно указать, нужно ли в проекте использовать страницы Facelets или JSP.

Figure 6. Укажите параметры сервлета Faces и предпочитаемый язык

Вы также можете легко настроить проект для использования различных наборов компонентов JSF на вкладке ‘Компоненты’. Чтобы использовать набор компонентов, нужно загрузить необходимые библиотеки и использовать диспетчер Ant Library для создания новой библиотеки с библиотеками наборов компонентов.

Figure 7. Укажите параметры сервлета Faces и предпочитаемый язык

  1. Нажмите кнопку «ОК» для подтверждения изменений и закройте окно «Свойства проекта».

После добавления поддержки JSF к проекту дескриптор развертывания web.xml изменяется и выглядит следующим образом. (Изменения выделены полужирным шрифтом.)

<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    *<context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
    </context-param>
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>*
    <welcome-file-list>
        <welcome-file>*faces/*index.xhtml</welcome-file>
    </welcome-file-list>
</web-app>

Важно! Убедитесь, что файл web.xml содержит только одну запись <welcome-file> с компонентом ‘faces/’, как показано в примере. Это обеспечивает передачу страницы приветствия проекта (index.xhtml) через сервлет Faces перед ее отображением в браузере. Это необходимо для верного отображения компонентов библиотек тегов Facelets.

Сервлет Faces регистрируется в проекте, и теперь страница приветствия index.xhtml при запросе передается через сервлет Faces. Кроме того, обратите внимание, что добавлена запись для параметра контекста PROJECT_STAGE. При установке значения этого параметра на “Development” предоставляется полезная информация во время отладки приложения. См. http://blogs.oracle.com/rlubke/entry/jsf_2_0_new_feature2 для получения дополнительной информации.

Для просмотра библиотек JSF разверните узел «Библиотеки» проекта в окне «Проекты». Если используются библиотеки по умолчанию, включенные в GlassFish Server 3.1.2 или GlassFish Server 4, под узлом сервера GlassFish отображается javax.faces.jar. (Если вы используете старую версию GlassFish, вы увидите библиотеки jsf-api.jar и jsf-impl.jar, а не javax.faces.jar.)

Поддержка JSF в среде IDE 2.x включает в себя в первую очередь большое количество мастеров для JSF, а также специальные функциональные возможности, предоставляемые редактором Facelets. Эти функциональные возможности описаны ниже. Подробнее см. в разделе Поддержка JSF 2.x в IDE NetBeans.

Как создать кнопку возврата HTML

Вы можете добавить кнопку «Назад» на свою веб-страницу. Когда посетитель вашей страницы нажимает кнопку, он попадает на последнюю посещенную страницу, как если бы он нажал кнопку «Назад» в своем браузере.

Вы можете добиться этого, отредактировав HTML-код своей страницы и добавив немного JavaScript.

Примечание

Эти кнопки не будут работать, если у пользователя нет истории просмотров. Например, если пользователь откроет вашу страницу в новой вкладке или окне браузера, при нажатии кнопки ничего не произойдет.

Использование history.back

В веб-браузере окно встроенного объекта JavaScript имеет объект с именем history, содержащий URL-адреса, которые пользователь посетил в текущем окне браузера. Вы можете использовать метод history.back (), чтобы указать браузеру вернуться на предыдущую страницу пользователя.

Один из способов использования этого JavaScript — добавить его к атрибуту события onclick кнопки. Здесь мы создаем кнопку, используя элемент

, содержащий элемент типа кнопки.

Вставьте следующий HTML-код на свою веб-страницу:

Результат выглядит как кнопка ниже. Если вы нажмете на нее, вы вернетесь на предыдущую страницу в своей истории.

Использование history.go

Метод history.go () указывает браузеру перейти на определенную страницу в истории просмотров пользователя.Вы можете указать, какой элемент истории, поместив число в круглые скобки. В компьютерном программировании это называется аргументом.

Если вы укажете число -1 в качестве аргумента, браузер вернется на одну страницу назад в истории браузера. Вот тот же код, что и выше, с использованием history.go (-1) вместо history.back ().

Сохранение навигации на странице с помощью самодельных кнопок «Назад» и «Вперед»

Привет, HTML-кодеры.Надеюсь, у вас была хорошая неделя. В этом выпуске информационного бюллетеня HTML

мы собираемся взглянуть на невероятно простой способ

предоставить вашей аудитории кнопки навигации вперед и назад

прямо на вашей веб-странице. Это избавляет пользователей

от необходимости нажимать кнопки «Назад» и «Вперед» в своих браузерах, что может показаться не таким уж большим делом. Мы собираемся поговорить о том, почему обслуживание

этих ссылок самостоятельно может сделать их жизнь немного проще, а вы —

— выглядеть лучше.

Большинству веб-пользователей удобно пользоваться кнопками «Назад» и «Вперед»

в своих браузерах. Если вы вообще занимались веб-серфингом, вы, вероятно, тоже им пользуетесь

, особенно кнопка «Назад». В конце концов, кнопка

Назад — наш друг, верно? Кнопка «Назад» может очень быстро вывести нас из

ужасных веб-сайтов. Например, предположим, что мы работаем

и проводим некоторые исследования президента США (примечание: первая ссылка

, которая приведет вас на сайт с контентом, это a.однозначно взрослый

в натуре и, р. не имеет никакого отношения к президенту или известному нам Белому дому

), и мы случайно набираем

http://www.whitehouse.com вместо http://www.whitehouse.gov.

Уупс! Большая ошибка, правда? Что, если наш босс пройдет мимо? Самый быстрый способ

убрать версию .com с нашей страницы — это нажать кнопку «Назад» в браузере

. Через несколько секунд мы вернемся на безопасную территорию — на каком бы сайте мы не были

ранее.И мы можем повторно ввести этот URL, на этот раз правильно.

Это, несомненно, отличное применение для кнопки «Назад».

Однако это не единственное использование кнопки «Назад». В наши дни довольно

несколько плохо спроектированных сайтов полагаются на посетителей, которые используют кнопки «Назад» и «Вперед»

для навигации по своим страницам. Как они это делают? Легкий. По

не обеспечивает полезной и хорошо продуманной навигации. Если

пользователь не может найти способ вернуться туда, где он только что был,

кнопка «Назад» в конечном итоге используется в качестве основного инструмента навигации на сайте

.Это вообще плохая идея. Почему? Потому что как дизайнер

заставляет вас плохо выглядеть. Конечно, есть еще несколько вариантов.

Опция хлебных крошек

Использование хлебных крошек в таких случаях является хорошей идеей. Что такое панировочные сухари

? Панировочные сухари — это списки посещенных страниц на сайте в порядке

от домашней страницы до последней страницы, на которой был пользователь. Они

ведут хронологию пути пользователя по сайту, и они предоставляют легкий способ

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

: http://www.tpl.org/ — сайт фонда

Trust for Public Land.

Однако хлебные крошки — не самая простая вещь для реализации на всем сайте на

в мгновение ока, особенно если у вас уже есть свой сайт, созданный для большей части

. В этом случае лучше всего добавить на свои веб-страницы собственные кнопки «Вперед» и

назад. Это относительно просто, надежно, быстро,

, и есть несколько способов сделать это, в зависимости от ваших вкусов.

Наш метод использует объект истории в JavaScript. Но не откладывайте

на JavaScript. Наверное, добавить намного проще, чем вы думаете

!

Назад и вперед тоже

Во-первых, давайте добавим на страницу гиперссылки «Назад» и «Вперед». Код выглядит так:

:

Назад

Вперед

По сути, мы используем JavaScript, чтобы указать браузеру вернуться на одну страницу

в истории страниц для первой ссылки и перейти на одну страницу вперед

в истории страниц по второй ссылке.Если для перехода к

нет страницы «будущего», то ссылка «Вперед» никуда не приведет пользователя. Добавляя эти две строки кода

на каждую из ваших страниц, вы даете возможность своему зрителю

перемещаться по страницам, не покидая страницы, чтобы попасть туда, куда они

хотят перейти.

Если вы хотите сделать это немного более наглядным, вы можете использовать кнопки формы

вместо ссылок, чтобы направлять посетителей назад или вперед. Код

выглядит так:

В основном мы делаем здесь то же самое, что и в последнем блоке кода

— используя элемент истории JavaScript.На этот раз мы заключаем код

в форму, которая позволит нам использовать кнопки формы для графики. Попробуйте код

и посмотрите, что вы думаете. Я думаю, что это выглядит очень красиво.

Итак, зачем беспокоиться об этих самодельных кнопках «Назад» и «Вперед» на первом месте

? Наиболее важные причины: а) он поддерживает навигацию вашего сайта

там, где она должна быть — на вашем сайте, и б) предоставляет очень популярный инструмент навигации для ваших пользователей. Все дело в дизайне — почему

полагается на чужой инструмент, чтобы привлечь внимание зрителей? В конце концов, вы же дизайнер Web

.Вы достаточно хороши, чтобы делать эти вещи самостоятельно!

Это все, что у нас есть на эту неделю, народ. До следующей недели, будьте осторожны и

, желаю отличного!

Этот рассказ «Сохранение навигации на странице с помощью самодельных кнопок назад и вперед» был первоначально опубликован ITworld.

Авторские права © 2002 IDG Communications, Inc.

4 шаблона дизайна, которые нарушают ожидания пользовательского интерфейса кнопки «Назад» — 59% сайтов ошибаются — Статьи — Baymard Institute

«Как мне вернуться? Просто нажмите «Назад».Навигация, если честно, это не очень хорошо. И теперь это вернуло меня к женскому. В ПОРЯДКЕ. Не нравится «.

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

Часто это имеет серьезные последствия для удобства использования.- иметь техническую структуру по умолчанию, превосходит ожидания пользователей относительно того, как должна работать кнопка «Назад». Фактически, наш тест показывает, что 59% сайтов электронной коммерции ошибаются по крайней мере в одном из этих 4 ожиданий пользователей с точки зрения того, как они технически поддерживают использование кнопки «Назад».

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

В этой статье мы делимся результатами нашего крупномасштабного исследования юзабилити и обсуждаем наши выводы относительно:

  • Как пользователи ожидают, что кнопка «Назад» будет работать
  • Проблема 1. Оверлеи и лайтбоксы (37% сайтов этого не делают)
  • Проблема 2. Фильтрация и сортировка (27% сайтов этого не делают)
  • Выпуск 3: Кассы Accordion
  • Выпуск 4: Навигация от страницы продукта к списку продуктов
  • 5 других представлений, на которые влияет кнопка «Назад»
  • Простое решение всего этого

Решение простое, но на удивление часто игнорируется на этапе внедрения — даже на крупнейших веб-сайтах, как вы увидите ниже, и особенно на мобильных сайтах.

Как пользователи ожидают, что кнопка «Назад» будет работать

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

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

Ожидания пользователя кнопки «Назад» в Walmart не оправдались. Путь пользователя был «список продуктов> страница продукта> подстраница обзоров», затем она нажала на странице «Назад» . Это вернуло ее с подстраницы обзоров на страницу продукта. Затем она провела пальцем по краю экрана, чтобы вернуться к списку продуктов — только для того, чтобы вернуться на подстраницу обзоров. В замешательстве она снова нажала ссылку «Назад» на странице и вернулась на страницу продукта.Теперь она забыла о своем первоначальном намерении вернуться к списку продуктов и вместо этого начала просматривать перекрестные продажи. Невыполнение ожиданий пользователей кнопки «Назад» может вызвать серьезную дезориентацию и сбить с толку пользователей.

Примерно так же, как пользователи плохо разбираются в технике безопасности веб-сайтов и, вместо этого, руководствуются своим чутьем (узнать больше), они точно так же мало ценят (часто произвольные и незначительные) различия, когда новое представление является технически новым веб-страница или просто развернутый элемент на существующей странице.И в этом заключается загвоздка: кнопка браузера «Назад» возвращает пользователя к ранее посещенному URL, который не обязательно совпадает с тем, что пользователь воспринимал как свою ранее посещенную страницу.

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

4 самых распространенных ошибки пользовательского интерфейса кнопки «Назад»

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

  1. Оверлеи и лайтбоксы (37% сайтов этого не делают)
  2. Фильтрация и сортировка (27% сайтов этого не делают)
  3. Касса с аккордеонами
  4. Возврат к списку продуктов со страницы продуктов

(Наше введение в процесс проектирования UX и рабочий процесс объясняет, как дизайнеры UX определяют и соответствуют ожиданиям пользователей.)

1) Оверлеи и лайтбоксы (37% сайтов этого не делают)

В Nike пользователи могут просматривать высококачественные изображения продуктов в наложенной галерее изображений. Однако нажатие кнопки «Назад» не возвращает пользователей на страницу продукта, а вместо этого отправляет их на предыдущую страницу (в данном случае — список продуктов). Это не соответствует ожиданиям пользователей о том, как должна работать кнопка «Назад».

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

Это пользовательское ожидание «нажмите« Назад », выйдите из оверлея». наблюдалось во время тестирования как на настольных, так и на мобильных сайтах для всех типов оверлеев.Например, инициируемый сайтом информационный бюллетень — запросы на подписку, оверлеи галереи изображений или предложения в чате. Таким образом, пользователи должны всегда выходить из оверлея при нажатии «Назад» и возвращаться на страницу, на которой находится оверлей (а не на предыдущую страницу).

Стоит отметить, что вероятность использования пользователем кнопки «Назад» для выхода из оверлея зависит от того, насколько заметным является предоставленный сайтом элемент «Закрыть» (например, «X» для выхода из оверлея). Очень заметные элементы «Закрыть», вероятно, будут использоваться пользователями чаще, чем незаметные элементы «Закрыть», и, таким образом, нагрузка на кнопку «Назад» уменьшается, когда наложения имеют очень заметные элементы «Закрыть».Конечно, пользователи все равно должны выходить из оверлея, нажимая «Назад», даже если он снабжен заметным элементом «Закрыть».

«Я не знаю, как выйти из этой… кнопки« Назад »? Так я вернулся к разделу поиска толстовок [список продуктов] ». Пользователь попытался выйти из оверлея галереи изображений, нажав кнопку «Назад» (первое изображение), но вместо этого он вернулся к списку продуктов (второе изображение). (Предоставленная сайтом ссылка «Назад» была фактически скрыта рекламой «Установить приложение».)

Во время тестирования мобильных устройств мы заметили, что пользователям было труднее закрывать оверлеи с помощью предоставленных сайтом элементов «Закрыть», часто из-за проблем с областью нажатия, при этом «X» часто помещался близко к краю экрана или «Установить приложение» »Объявление, закрывающее элемент« Закрыть »(см. Нашу статью о том, как сделать акцент на рекламе типа« Установить приложение »или полностью отказаться от нее). Таким образом, мобильные пользователи с большей вероятностью будут использовать кнопку «Назад» для закрытия оверлеев по сравнению с пользователями настольных компьютеров, и еще более важно, чтобы их ожидание выхода из оверлея поддерживалось при нажатии «Назад».

2) Фильтрация и сортировка (27% сайтов этого не делают)

Пользователь Amazon нажимает «Назад» после применения 3 фильтров (первое изображение). При этом будет удален последний примененный фильтр, и теперь показано, что применены 2 фильтра (второе изображение). Нажав «Назад» после применения фильтров, вы должны начать удаление примененных фильтров.

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

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

«Думаю, я вернусь…» Пользователь JBL отсортировал список продуктов наушников по цене от низкой к высокой (первое изображение). Изучив продукт на странице продукта, она решила, что хочет продолжить просмотр, и нажала, чтобы вернуться к списку продуктов (второе изображение).Однако она коснулась дважды: это привело к ее возврату к списку продуктов, а также к изменению направления сортировки, но направление сортировки было изменено только на заднем конце, так как направление сортировки все еще было «Цена: (От низкой к высокой. ) » (третье изображение). По ее словам, «Фильтр [направление сортировки] убран, хотя он говорит, что все еще работает … Они не в порядке фильтра [сортировки] … Те, на которые я смотрел, я не могу их найти». Такие технические ошибки были довольно частыми во время тестирования и вызывали у пользователей сомнения в отношении сортировки списка продуктов.

Однако важно отметить, что во время тестирования было много случаев, когда пользователи нажимали «Назад», и фильтр удалялся или направление сортировки изменялось — но этот не был передан пользователям во внешнем интерфейсе. Другими словами, хотя нажатие кнопки «Назад» технически действительно удаляло фильтр или меняло направление сортировки, пользователям казалось, что ничего не изменилось, поскольку (теперь удаленные) фильтры все еще отображались как примененные или показанное направление сортировки не отображалось. t соответствуют фактическому порядку сортировки в списке продуктов.Это, очевидно, приведет к путанице для пользователей, которые будут задаваться вопросом, было ли их нажатие или нажатие на кнопку «Назад» успешным, если их действия не совпадают с тем, что они видят в интерфейсе.

Если фильтрация или сортировка осуществляется в совершенно отдельном интерфейсе — что очень часто встречается на мобильных сайтах — очень важно, чтобы нажатие «Назад» в интерфейсе действовало как ссылка «Выход» (т. Е. Аналогично выходу из оверлея) . То есть, после нажатия кнопки «Назад» в интерфейсе пользователи должны вернуться к виду, который они просматривали непосредственно перед открытием интерфейса фильтрации или сортировки.

3) Аккордеонные кассы

Вопреки тому, что можно было подумать, оформление заказа в виде гармошки не воспринимается как одностраничное оформление заказа с несколькими свернутыми разделами. Вместо этого подавляющее большинство пользователей воспринимают их как многоэтапный процесс с резюме (подробнее о том, как пользователи воспринимают оформление в виде гармошки). Это может оказаться проблематичным на сайтах, где шаги аккордеона технически реализованы как одна страница с одним URL-адресом, поскольку пользователи хотят вернуться к предыдущему «шагу» оформления заказа (например,g., для редактирования ранее введенной информации) будут отправлены обратно в корзину.

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

4) Возврат к списку продуктов со страницы продуктов

«Когда вы нажимаете кнопку« Назад », вы возвращаетесь к началу. Скорее, чем на том месте, где вы остановились ». Этот пользователь потратил много времени во время тестирования, прокручивая список продуктов Walgreens, уточняя продукты после возврата со страниц продуктов.

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

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

«Когда вы нажимаете кнопку« Назад », вы возвращаетесь к началу. Скорее, чем на том месте, где вы остановились ».

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

Независимо от используемой схемы загрузки продукта, если процесс уточнения правильного места в списке продуктов является слишком трудоемким и хлопотным , пользователи вполне могут сдаться.

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

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

5 других просмотров, на которые влияет кнопка «Назад» в браузере

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

Примечание: этот список не является исчерпывающим, он является более иллюстративным для «серых» областей, в которых следует уделить особое внимание тому, как кнопка «Назад» должна работать в данном контексте.

  1. Многоступенчатые процессы на странице
  2. Расширение содержания
  3. Анкерные звенья
  4. Усеченное содержимое
  5. Варианты на странице продукта

1) Многоступенчатые процессы внутри страницы

1) Многоступенчатые процессы на странице. Пользователь во время предыдущего раунда тестирования Sears взаимодействовал с многоэтапным оценщиком доставки на странице продукта (поле «Параметры доставки», ). Он прошел несколько шагов, прежде чем нажать кнопку «Назад» в браузере. Однако он был прокручен только до верхней части страницы, а не был переведен на предыдущий шаг в оценщике доставки, как он ожидал. Затем он щелкнул предоставленную сайтом ссылку «назад» в оценщике доставки и смог вернуться назад через процесс.

Часто бывает сложно определить, что показывать пользователям после того, как они нажимают кнопку «Назад», когда они взаимодействуют с многоступенчатым процессом, встроенным в страницу, например, с помощью средств оценки доставки, мастеров поиска продуктов, анкетирования и т. Д. Хотя некоторые пользователи могут предположить, что они будут переведены на предыдущую страницу, другие будут предполагать, что они будут переведены на предыдущий этап процесса.

Сама структура встроенного процесса, вероятно, сильно влияет на ожидания пользователей. Например, когда процесс занимает более 50% интерфейса — что очень часто бывает на мобильных устройствах — многие пользователи могут ожидать, что после нажатия кнопки «Назад» они увидят предыдущий шаг процесса, а не предыдущая страница.

Однако длина процесса также является здесь фактором. Пользователям несложно вернуться, например, через трехэтапный процесс, даже если они ожидали, что кнопка «Назад» вернет их на предыдущую страницу. Следовательно, последствия принуждения всех пользователей к этому не столь серьезны. Если, с другой стороны, процесс длительный — например, процесс из 7 этапов — то действие обратного нажатия становится намного более утомительным, если, например, пользователям приходится возвращаться через 6 отдельных представлений, чтобы, наконец, вернуться к предыдущую страницу они были на.

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

Таким образом, при принятии решения о том, должен ли каждый шаг в процессе иметь свой собственный отдельный URL-адрес (требуя пользователи могут вернуться назад на каждом этапе процесса) или нет (где нажатие «Назад», даже если пользователь находится на нескольких этапах процесса, возвращает пользователя на предыдущую страницу или, в качестве альтернативы, выходит из процесса).

2) Расширение содержимого

2) Расширение содержания. В одном из наших первых раундов тестирования навигации пользователь изучал эскизы изображений в IKEA «Решения для сидения» . Каждый эскиз при нажатии растягивается на всю ширину страницы. Развернув первую миниатюру (первое изображение), пользователь развернул другую миниатюру, но затем захотел вернуться к первому изображению и щелкнул в браузере кнопку «Назад» (второе изображение). Однако кнопка «Назад» вернула его обратно на главную страницу категории, а не на первое развернутое изображение (третье изображение), поскольку расширенные параметры не были частью истории браузера.

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

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

3) Якорные звенья

3) Анкерные звенья. Пользователь на странице целевого продукта коснулся средней звезды обзора в верхней части страницы (первое изображение) и был перепрыгнут в раздел обзоров (второе изображение). Удовлетворенный отзывами, пользователь нажал «Назад», но оказался в списке продуктов, а не вернулся в верхнюю часть страницы продукта, как предполагал (третье изображение). Она повторно нашла элемент списка продуктов, который ее интересовал, нажала, чтобы вернуться на страницу продукта, затем добавила продукт в свою корзину.

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

Например, если пользователь переходит в раздел обзоров после нажатия средней звезды отзывов в верхней части страницы продукта, то они должны быть возвращены в верхнюю часть страницы продукта при нажатии «Назад».Это связано с тем, что, когда пользователи переходят вниз по странице, они, как правило, теряют обзор того, где они находятся после перехода, и могут думать, что действительно находятся на совершенно новой странице (особенно на мобильных сайтах). Возвращение их туда, где они были изначально, после нажатия «Назад», гарантирует, что они не станут слишком дезориентированными.

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

Таким образом, некоторые пользователи, которых плавно переместили на новую позицию на странице, могут почувствовать, что сайт не соответствует их ожиданиям, если после нажатия «Назад» они не вернулись на страницу, а вернулись на свою предыдущее место на странице. Поскольку они плавно прокручиваются, они знают, где они находятся — они могут легко прокрутить вверх, если захотят, но, нажав «Назад», они вместо этого сигнализируют о своем намерении вернуться на страницу назад.(Обратите внимание, что при нажатии привязки рекомендуется, чтобы пользователи всегда плавно прокручивали, а не прыгали.)

Таким образом, следует учитывать конкретный контекст, в котором кнопка «Назад» будет нажата после того, как пользователь плавно прокрутил страницу после нажатия привязки. Если пользователь находится на мобильном сайте, и это очень длинная страница продукта и нет опции «Вернуться к началу», то, вероятно, имеет смысл перенаправить пользователей по нажатой якорной ссылке, а не вернуться на страницу, когда они нажимают кнопку «Назад».

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

4) Усеченное содержимое

4) Усеченное содержимое. Пользователь Overstock изучала страницу продукта и в процессе нажала, чтобы развернуть усеченный контент (первое изображение).Готова вернуться к списку продуктов, она прокрутила страницу вверх и нажала «Назад» (второе изображение). Однако это вернуло ее к контенту, который она только что просматривала, в середине страницы (третье изображение). Она снова нажала «Назад», и на этот раз вернулась к списку продуктов. Возвращение пользователей к ссылке, по которой они перешли, чтобы показать усеченный контент, приводит к неприятным результатам.

Усеченное содержание, которое расширяется, когда пользователи нажимают ссылку или кнопку, не должно быть отдельным URL-адресом, который пользователи повторно посещают, когда нажимают «Назад».Например, на страницах мобильных продуктов довольно часто предлагают пару строк текста или абзац описания продукта, а затем скрывают остальное за ссылкой «Еще». Хотя это может сделать страницы продуктов более удобными для сканирования, пользователи должны возвращаться к предыдущей странице, а не к предыдущему содержанию, когда они нажимают «Назад».

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

5) Варианты на странице продукта

5) Варианты на странице товара. «Хорошо, это раздражает … Просто пытаюсь вернуться на страницу помады, где мы были [список продуктов]. Я просто не держу ее [кнопку «Назад» в браузере], верно? » Пользователь Sephora несколько раз нажал кнопку «Назад», но ничего не произошло, за исключением того, что страница немного сдвинулась вверх (первое изображение).Затем она открыла историю просмотров, удерживая кнопку «Назад», и таким образом смогла вернуться к списку продуктов (второе изображение). До нажатия кнопки «Назад» пользователь изучал образцы цвета, и из истории браузера кажется, что Sephora реализовала каждый вариант цвета как отдельный URL-адрес. Тем не менее, изображение продукта не изменилось для пользователя, когда она нажала «Назад» (но это изменилось, когда она первоначально изучала образцы).

Варианты продукта должны быть объединены в один элемент списка продуктов.Затем пользователи могут изучить варианты на странице продукта. Однако должны ли эти варианты иметь отдельные URL-адреса — и, таким образом, пользователи будут возвращаться к каждому предыдущему варианту, который они уже исследовали, нажав «Назад», — снова зависит от контекста.

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

Это может стать гораздо более разрушительным опытом, если, например, их не вернут туда, где они были ранее в списке продуктов, что заставит их заново отыскивать продукт, который они только что просматривали.

Если у каждого варианта есть свой отдельный URL-адрес, очень важно, чтобы изображение продукта менялось после каждого нажатия кнопки «Назад». В противном случае пользователи будут нажимать «Назад» с без указания , что что-то происходит в интерфейсе (даже если они технически видят разные URL-адреса). Это верный путь к катастрофе, так как большинство пользователей решат, что сайт «завис», или просто не поймут, почему их действия не имеют никакого эффекта.

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

Решение

Хорошая новость заключается в том, что HTML5 предоставляет относительно простое решение: API истории HTML5. Точнее история .Функция pushState () позволяет сайту вызывать изменение URL без перезагрузки страницы, то есть сайт может настроить поведение кнопки «Назад» в браузере в соответствии с ожиданиями пользователей. (Возможно и обратное: изменить URL-адрес, не вызывая записи в истории пользователя.)

На сайте Skechers.com реализация «Загрузить больше» активно решает проблему с кнопкой «Назад», переписывая URL-адрес каждый раз, когда пользователи нажимают кнопку «Загрузить еще». Следовательно, когда пользователи нажимают кнопку «Назад» в браузере на странице продукта, они возвращаются в нужную позицию в списке продуктов (например,г., на «страницу 3»).

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

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

В итоге: Используйте history.pushState () , чтобы убедиться, что ваш сайт вызывает поведение кнопки «Назад», которое соответствует ожиданиям пользователя. В частности, убедитесь, что любое визуальное изменение, которое пользователь будет воспринимать как новую страницу, добавлено в его историю просмотров, независимо от того, технически это новая страница или нет.Это включает, но не ограничивается:

  • Оверлеи / лайтбоксы
  • Фильтрация и сортировка выборок
  • Ступеньки кассы «Аккордеон»
  • Список продуктов, расположение

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

  • Многоступенчатые процессы на странице
  • Расширение содержания
  • Анкерные звенья
  • Варианты на странице продукта

Усеченное содержимое, как правило, никогда не должно быть реализовано как новая «страница» с использованием истории .pushState () .

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

В этой статье представлены результаты исследования только одного из 580+ руководств по UX в Baymard Premium — получите полный доступ, чтобы узнать, как создать «современную» систему навигации для электронной коммерции.

Используйте стандартные редиректы — не ломайте кнопку возврата!

Используйте стандартные редиректы: не ломайте кнопку возврата!

Способы использования и способы избежать

Не используйте «обновить» для перенаправления

Если вам нужен http: // www.example.org/foo , чтобы отобразить то, что находится на http://www.example.org/bar вам не следует использовать методы «обновления» нравится:

 . 

Почему? потому что это могло сломать кнопку «назад». Представьте, что пользователь нажимает кнопку «назад», обновление будет работать снова, и пользователь отскочит вперед. Пользователь, скорее всего, сильно разозлится и закроет окно, что, вероятно, не так. Вы, как автор этой страницы, хотите.

Использовать перенаправление HTTP вместо

При использовании метатега «обновить» для создания перенаправления мы получаем конкретная инструкция в документе. Пользовательский агент (будь то браузер или валидатор разметки), как ожидается, загрузит страницу, посмотрите ее содержимое, найдите инструкцию «обновить», дождитесь указанного количество времени (которое может составлять «0» секунд для «немедленного» обновления, но на самом деле может быть что угодно), а затем приступить к новому адресу.

«Перенаправление HTTP», с другой стороны, действует гораздо более напрямую, потому что выполняется в другом слое .Когда пользовательский агент (то есть браузер или валидатор) сначала связывается с сервером и запрашивает документ, сам _сервер_, который был настроен для перенаправления документа на другой адрес, отвечает пользовательскому агенту что вместо этого он должен смотреть на новый адрес.

«Перенаправление HTTP» также является более богатым способом перенаправления, поскольку оно дает агенту пользователя больше информации, чем просто новый адрес: сервер также дает некоторую информацию о цель и тип перенаправления, что позволяет агенту пользователя вести себя по-разному в зависимости от типа редиректа.Различные типы переадресации HTTP (в зависимости от статуса HTTP код в ответе, отправленном сервером) являются постоянным перенаправлением (HTTP 301), временное перенаправление (307) и неопределенное перенаправление (302).

Документацию см. По ссылкам ниже. и руководства о том, как это сделать с вашим веб-сервером.

Дополнительная литература

  • О редиректах:
  • Как делать редиректы на вашем сервере:

О «Советы по обеспечению качества»

W3C QA Tips — это короткие документы, объясняющие полезные кусочки знаний для веб-разработчиков или дизайнеров, размещенные и произведенные службой контроля качества Группа интересов в W3C.

Пока подсказки внимательно изучаются участниками группы, их не следует видеть как ни что иное, как информативные кусочки мудрости, и особенно, они , а не нормативные технические характеристики W3C.

Узнайте больше о советах, как представить свои собственные жемчужины мудрости и найти всех других QA советы в Указателе советов.

10 основных ошибок веб-дизайна 1999 г.

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

Но, к сожалению, новых веб-технологий и новых приложений для Интернета представили совершенно новый класс ошибок. Вот 10 худших.

1. Обрыв или замедление

Кнопка возврата

Кнопка Назад — это линия жизни веб-пользователя и вторая по популярности функция навигации (после перехода по гипертекстовым ссылкам). Пользователи с радостью знают, что они могут попробовать что угодно в Интернете, и всегда можно сохранить одним или двумя щелчком мыши на Back , чтобы вернуть их на знакомую территорию.

За исключением, конечно, тех сайтов, которые нарушают Назад , совершая один из этих дизайнерских грехов:

  • открытие нового окна браузера (см. Ошибку №2)
  • с использованием немедленного перенаправления : каждый раз, когда пользователь нажимает Назад , браузер возвращается на страницу, которая перенаправляет пользователя в нежелательное место
  • предотвращает кэширование , так что для навигации Back требуется новое обращение к серверу; вся гипертекстовая навигация должна быть меньше секунды, и это удваивается для возврата

2.Открытие нового браузера Windows

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

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

(См. Также специальные инструкции по открытию файлов PDF в новых окнах.)

3. Нестандартное использование виджетов графического интерфейса

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

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

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

В настоящее время самые серьезные нарушения согласованности в сети обнаруживаются при использовании виджетов GUI, таких как переключатели и флажки.Соответствующее поведение этих элементов дизайна определено в рекомендациях по проектированию рабочего стола Windows, стандарте интерфейса пользователя Macintosh и стандарте пользовательского интерфейса Java. Какой из этих стандартов следует придерживаться, зависит от платформы, используемой большинством ваших пользователей (хорошая ставка: Windows), но это вряд ли имеет значение для самых простых виджетов, поскольку все стандарты имеют почти идентичные правила. Обновление: самые полезные стандарты дизайна платформ показывают, как должны себя вести компоненты, с примерами: Стандарты веб-дизайна США и рекомендации Google по дизайну материалов.

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

(См. Также: Нестандартные элементы управления графическим интерфейсом были одной из самых больших проблем удобства использования, выявленных при тестировании 46 веб-приложений во Flash.Для получения последней информации см. Наш однодневный семинар по разработке приложений для Интернета и настольных компьютеров).

4. Отсутствие биографий

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

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

Особенно плохо, когда авторство превращается в ссылку mailto: вместо ссылки на биографию автора. Две причины:

  • Читатель гораздо чаще хочет узнать больше об авторе (включая поиск других статей автора), чем читатель хочет связаться с автором — конечно, контактная информация часто бывает Хорошая часть биографии, но она не должна быть первичной или единственной информацией об авторе.
  • Он нарушает правила Интернета, когда щелчок по синему подчеркнутому тексту порождает сообщение электронной почты вместо активации гипертекстовой ссылки на новую страницу; такая непоследовательность снижает удобство использования, делая Интернет менее предсказуемым.

5. Отсутствие архивов

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

Архивы также необходимы как единственный способ устранить ротацию ссылок и тем самым побудить другие сайты ссылаться на вас.

6. Перенос страниц на новые URL-адреса

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

7. Заголовки, не имеющие смысла вне контекста

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

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

  • Сообщите пользователям, что находится на другом конце ссылки, без каких-либо догадок.
  • Защитите пользователей от перехода по ссылке, если они не будут заинтересованы в целевой странице (так что никаких дразнилок — они могут сработать один или два раза для увеличения трафика, но в конечном итоге они заставят пользователей покинуть сайт и снизят доверие к нему) .

8. Прыгая в самую последнюю интернет-модную словечку

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

Push, сообщество, чат, бесплатная электронная почта, 3D карты сайта, аукционы — вы знаете, что делать.

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

В следующем месяце появится новое модное словечко. Рассчитывай на это. Но не спешите с этим только потому, что Юпитер пишет об этом отчет.

9. Медленное время ответа сервера

Медленное время отклика — худшее нарушение юзабилити в Интернете: в моем обзоре исходных «10 самых популярных» ошибок у основных сайтов был поистине ужасающий показатель нарушения правила — 84% по отношению к правилу времени отклика.

Раздутый графический дизайн был изначальным нарушителем в области времени отклика. На некоторых сайтах все еще слишком много графики или слишком большая графика; или они используют апплеты там, где простой или динамический HTML помогли бы. Так что я не отказываюсь от своего крестового похода, чтобы минимизировать время загрузки.

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

Пользователям все равно почему время отклика такое медленное. Все, что они знают, — это то, что сайт не предлагает хорошее обслуживание: медленное время отклика часто приводит непосредственно к снижению уровня доверия, и они всегда вызывают потерю трафика , поскольку пользователи переводят свой бизнес в другое место . Так что инвестируйте в быстрый сервер и получите эксперта по производительности, который проанализирует архитектуру вашей системы и качество кода, чтобы оптимизировать время отклика.

10. Все, что похоже на рекламу

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

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

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

  • Баннерная слепота означает, что пользователи никогда не зацикливаются на чем-либо, что выглядит как рекламный баннер из-за формы или положения на странице.
  • Избегание анимации заставляет пользователей игнорировать области с мигающим или мигающим текстом или другой агрессивной анимацией.
  • Очистка всплывающих окон означает, что пользователи закрывают всплывающие окна Windoids еще до того, как они будут полностью отрисованы; иногда с большой злобой (своего рода триумф возвращения в GeoCities).Я не хочу полностью запрещать всплывающие окна, поскольку они иногда могут быть полезной частью интерфейса, но я советую убедиться, что существует альтернативный способ использования сайта для пользователей, которые никогда не видят всплывающие окна.

Мы обсуждаем гораздо более широкий набор вопросов юзабилити на дневных курсах обучения на UX Conference.

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

Как перейти на предыдущую страницу в Angular

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

Вот как я настраиваю свои маршруты для этого примера. Обратите внимание, что UserListComponent должен содержать список всех пользователей, а ActiveUsersComponent содержит только некоторых.Оба компонента будут ссылаться на UserDetailComponent , из которого мы затем хотели бы вернуться.

  постоянные маршруты: Routes = [
  {
    путь: 'пользователи',
    компонент: UsersComponent,
    дети: [
      {путь: '', компонент: UserListComponent},
      {путь: 'активный', компонент: ActiveUsersComponent},
      {путь: ': id', компонент: UserDetailComponent},
    ],
  },
  {path: '**', redirectTo: 'users'},
]  

Статическая обратная навигация с маршрутизацией

Одним из решений может быть определение ссылки маршрутизатора в компоненте сведений и явный переход к родительскому объекту с абсолютным маршрутом:

   Назад с абсолютной маршрутизацией   

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

  импортировать {Router} из '@ angular / router'

@Компонент({...})
экспорт класса UserDetailComponent {
  конструктор (частный маршрутизатор: Маршрутизатор) {}

  back (): void {
    this.router.navigate ('/ пользователи')
  }
}  

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

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

  back (): void {
    this.router.navigate ("..");
}  
   Назад с относительной маршрутизацией   

Однако это будет работать, только если компонент списка зарегистрирован как дочерний с пустым путем, как это было сделано в конфигурации маршрута выше.В противном случае вам придется добавить точки к дочернему маршруту, на который вы нацеливаетесь (например, ../list ). По сути, этот подход просто перемещается на один уровень вверх в иерархии маршрутизации.

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

Динамическая обратная навигация с историей браузера

Кнопка возврата в браузере основана на истории браузера. К счастью, у него есть JavaScript API, который мы можем использовать для динамической навигации вперед и назад по нашему приложению Angular. Фактически, Angular даже предоставляет сервис Location как абстракцию платформы.

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

  импортировать {Location} из '@ angular / common'

@Компонент({...})
экспорт класса UserDetailComponent {
  конструктор (частное местоположение: Местоположение) {}

  back (): void {
    this.location.back ()
  }
}  

Это решает проблему, которая у нас была раньше, и теперь пользователь может вернуться к фактическому списку, из которого он пришел. Вы можете попробовать это в примере ниже:

  1. / пользователи : нажмите на первого пользователя
  2. / users / 1 : нажмите «Назад с местоположением»
  3. / users : Работает! Теперь нажмите «Активный»
  4. / users / active : щелкните первого пользователя
  5. / users / 1 : нажмите «Назад с местоположением»
  6. / users / active : Тоже работает!

К сожалению, есть один крайний случай: если приложение запускается на маршрутизаторе деталей после открытия браузера или новой вкладки, в истории не будет записи, к которой можно было бы вернуться.В этом случае location.back () выбрасывает пользователя из вашего приложения Angular. Также нет API для прямого просмотра истории браузера, так как это может создавать проблемы с безопасностью, но все еще есть способ исправить это.

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

  импортировать {Injectable} из '@ angular / core'
импортировать {Location} из '@ angular / common'
импортировать {Router, NavigationEnd} из '@ angular / router'

@Injectable ({providedIn: 'root'})
экспортный класс NavigationService {
  личная история: строка [] = []

  конструктор (частный маршрутизатор: Маршрутизатор, частное местоположение: Местоположение) {
    this.router.events.subscribe ((событие) => {
      if (event instanceof NavigationEnd) {
        this.history.push (event.urlAfterRedirects)
      }
    })
  }

  back (): void {
    this.history.pop ()
    if (this.history.length> 0) {
      this.location.back ()
    } еще {
      this.router.navigateByUrl ('/')
    }
  }
}  

Затем мы можем внедрить NavigationService в компоненты и вызвать его собственный метод back () вместо прямого использования Angular Location service:

  импортировать {NavigationService} из './navigation.service'

@Компонент({...})
экспорт класса UserDetailComponent {
  конструктор (частная навигация: NavigationService) {}

  back (): void {
    this.navigation.back ()
  }
}  

Кроме того, мы можем заключить существующее решение в директиву Angular для удобства повторного использования. Просто введите NavigationService и вызовите метод back () , используя HostListener:

  импортировать {Директива, HostListener} из '@ angular / core'
импортировать {NavigationService} из './navigation.service'

@Directive ({
  селектор: '[backButton]',
})
экспортный класс BackButtonDirective {
  конструктор (частная навигация: NavigationService) {}

  @HostListener ('щелкнуть')
  onClick (): void {
    это.navigation.back ()
  }
}  

После этого вы можете применить директиву в шаблонах компонентов следующим образом:

    

Живой пример

Вот StackBlitz, показывающий примеры для всех подходов. Если у вас есть вопросы, оставьте комментарий ниже или напишите мне в Twitter @n_mehlhorn. Также подписывайтесь на меня там и присоединяйтесь к моему списку рассылки, чтобы получать уведомления, когда я публикую что-то новое.

Показать оповещение при перезагрузке страницы и нажать кнопку «Назад» в браузере.

Когда пользователей веб-сайта просят ввести много данных, важно убедиться, что данные не будут потеряны, если произойдет что-то непредвиденное.

Один из способов гарантировать это — хранить данные где-нибудь (например, в локальном хранилище), чтобы, когда пользователь покидает страницу, данные сохранялись при следующем посещении.

Другой вариант — отобразить всплывающее окно, предупреждающее пользователя о потере данных при выходе со страницы.

В этой статье мы узнаем, как отобразить такое всплывающее окно с помощью JavaScript.

Событие перед разгрузкой

Событие beforeunload запускается, когда окно, документ и его ресурсы собираются выгрузить.

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

В случае подтверждения — браузер переходит на новую страницу, в противном случае навигация прерывается.

Согласно спецификации — для отображения всплывающего окна нам просто нужно вызвать preventDefault для события en, однако следует отметить одну важную вещь: это работает не для всех браузеров.

Для поддержки всех браузеров, помимо вызова preventDefault , нам необходимо:

  • Назначьте строку для returnValue события
  • Вернуть строку из обработчика событий

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

Таким образом, даже если вы вернете собственное сообщение, большинство браузеров все равно будут отображать сообщение по умолчанию, которое нельзя изменить.

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

Пример

Давайте напишем код, который прослушивает событие beforeunload и запускает всплывающее окно:

  useEffect (() => {
  window.addEventListener ("перед выгрузкой", handleBeforeUnload);
  return () => {
    окно.removeEventListener ("перед выгрузкой", handleBeforeUnload);
  };
}, []);

const handleBeforeUnload = (e) => {
  e.preventDefault ();
  const сообщение =
    «Вы уверены, что хотите уйти? Все предоставленные данные будут потеряны.»;
  e.returnValue = сообщение;
  ответное сообщение;
};  

Хотя приведенный выше код написан на React, его можно легко преобразовать в обычный JavaScript.

Приведенный выше код в действии (сначала я нажимаю кнопку возврата в браузере, затем обновляю страницу):

Совместимость с браузером

Решение с комбинацией preventDefault , присвоение строки returnValue и возвращение строки работает в большинстве браузеров.

См. Раздел «Совместимость браузеров», чтобы узнать, какие браузеры требуют, какой код в обработчике событий должен работать.

Также помните, что можно запретить браузерам прослушивать событие beforeunload с расширением или собственным параметром, например dom.disable_beforeunload in about: config в Firefox.

См. Этот раздел, чтобы узнать больше о том, как событие ведет себя в разных браузерах.

Сводка

В этой статье мы узнали, как отображать диалоговое окно подтверждения, когда пользователь нажимает кнопку «Назад» в браузере или перезагружает страницу с помощью события beforeunload .

Событие beforeunload запускается, когда окно, документ и его ресурсы собираются выгрузить.

Он отлично работает в большинстве браузеров, если вы следуете трем простым правилам в обработчике событий:

  • Позвонить предотвратить По умолчанию
  • Назначьте строку для возвращаемого значения
  • Вернуть строку из обработчика событий
.