Действия и события в AMP-письмах
Атрибут on
используется для установки обработчиков событий на элементы. То, какие события поддерживаются, зависит от элемента.
Синтаксис представляет собой простой предметно-ориентированный язык следующего вида:
eventName:targetId[.methodName[(arg1=value, arg2=value)]]
Описание каждой части синтаксиса приведено в таблице ниже.
Синтаксис | Обязательно? | Описание |
---|---|---|
eventName | да | Наименование события, предусмотренного элементом. |
targetId | да | Это DOM-идентификатор элемента или предустановленная специальная цель , над которой вы бы хотели осуществить действие в ответ на событие. В следующем примере targetId является DOM-идентификатором цели amp-lightbox , photo-slides . <amp-lightbox id="photo-slides"></amp-lightbox> <button on="tap:photo-slides">Показать изображения</button> |
methodName | нет | Предназначено для элементов с действиями по умолчанию. Это метод, доступный в целевом элементе (на который указывает В AMP есть концепция «действия по умолчанию»; такое действие могут устанавливать элементы. Поэтому, если |
arg=value | нет | Некоторые действия, если это задокументировано, могут принимать аргументы. Аргументы указываются в скобках в нотации ключ=значение . Допустимые значения:
|
Обработка нескольких событий
Чтобы элемент «слушал» несколько событий, разделяйте события точкой с запятой ;
.
Пример: on="submit-success:lightbox1;submit-error:lightbox2"
Несколько действий на одно событие
Чтобы в ответ на одно событие последовательно выполнить несколько действий, разделяйте действия запятой ','.
Пример: on="tap:target1.actionA,target2.actionB"
Глобально определенные события и действия
AMP определяет событие tap
глобально, что позволяет вам слушать касание на любом HTML-элементе (включая AMP-элементы).
AMP также определяет глобальные действия hide
, show
и toggleVisibility
, которые можно применять к любому элементу HTML.
Элемент может быть показан («show») только в том случае, если он ранее был скрыт действием hide
или toggleVisibility
, или атрибутом hidden
. Действие show
несовместимо с элементами, скрытыми с помощью CSS: display:none
или AMP: layout=nodisplay
.
Например, в AMP возможно следующее:
<div id="warning-message">Warning...</div> <button on="tap:warning-message.hide">Cool, thanks!</button>
События конкретных элементов
* — все элементы
Событие | Описание |
---|---|
tap | Срабатывает только при нажатии/касании элемента. |
Элементы input
Событие | Описание | Элементы | Данные |
---|---|---|---|
change | Происходит при изменении и фиксации элемента. Свойства данных являются повторением свойств HTMLInputElement и HTMLSelectElement. | input | event.min |
input[type="radio"] ,input[type="checkbox"]
| event.checked | ||
select | event.min event.max event.value | ||
input-debounced | Срабатывает при изменении значения элемента. Похоже на стандартное событие change , но срабатывает только через 300 мс после того, как значение элемента input перестало меняться. | Элементы, которые инициируют событие input . | Совпадают с данными события change . |
input-throttled | Срабатывает при изменении значения элемента. Похоже на стандартное событие change , но срабатывает не чаще чем раз в 100 мс до тех пор, пока значение элемента input не прекратит меняться. | Элементы, которые инициируют событие input . | Совпадают с данными события change . |
amp-accordion > section
Событие | Описание | Данные |
---|---|---|
expand | Срабатывает при развороте раздела accordion. | Нет |
collapse | Срабатывает при свертывании раздела accordion. | Нет |
amp-carousel[type="slides"]
Событие | Описание | Данные |
---|---|---|
slideChange | Срабатывает при смене текущего слайда карусели. | // Номер слайда. |
amp-lightbox
Событие | Описание | Данные |
---|---|---|
lightboxOpen | Срабатывает, когда лайтбокс полностью виден. | Нет |
lightboxClose | Срабатывает, когда лайтбокс полностью закрыт. | Нет |
amp-list
Событие | Описание | Данные |
---|---|---|
fetch-error (низкий уровень доверия) | Срабатывает при сбое загрузки данных. | Нет |
amp-selector
Событие | Описание | Данные |
---|---|---|
select | Срабатывает при выборе и снятии выбора с одного из вариантов. | // Значение атрибута "option" целевого элемента. |
amp-sidebar
Событие | Описание | Данные |
---|---|---|
sidebarOpen | Срабатывает, когда боковая панель полностью открыта (после завершения перехода). | Нет |
sidebarClose | Срабатывает, когда боковая панель полностью закрыта (после завершения перехода). | Нет |
amp-state
Событие | Описание | Данные |
---|---|---|
fetch-error (низкий уровень доверия) | Срабатывает при сбое загрузки данных. | Нет |
form
Событие | Описание | Данные |
---|---|---|
submit | Срабатывает при отправке формы. | |
submit-success | Срабатывает, когда на отправку формы получен ответ «Успешно». | // JSON ответа. |
submit-error | Срабатывает, когда на отправку формы получен ответ «Ошибка». | // JSON ответа. |
valid | Срабатывает, когда форма действительна. | |
invalid | Срабатывает, когда форма недействительна. |
События конкретных элементов
* — все элементы
Действие | Описание |
---|---|
hide | Скрывает целевой элемент. |
show | Показывает целевой элемент. Если в результате становится видимым элемент с атрибутом autofocus , он приобретает фокус. |
toggleVisibility | Переключает видимость целевого элемента. Если в результате становится видимым элемент с атрибутом autofocus , он приобретает фокус. |
toggleClass(class=STRING, force=BOOLEAN) | Переключает класс целевого элемента. Атрибут force является необязательным — он позволяет гарантировать, что: класс будет добавлен, но не удален (если задано значение true ) или только удален, но не добавлен (если задано значение false ). |
focus | Передает фокус целевому элементу. Чтобы убрать фокус, выполните focus на другом элементе (обычно родительском элементе). Мы настоятельно рекомендуем не убирать фокус путем назначения фокуса элементу body /documentElement во избежание некорректной работы возможностей универсального доступа. |
amp-accordion
Действие | Описание |
---|---|
toggle(section=STRING) | Переключает разделы amp-accordion между состояниями expanded и collapsed . При вызове без аргументов переключает состояние всех разделов accordion. Чтобы применить к определенному разделу, укажите идентификатор раздела on="tap:myAccordion.toggle(section='section-id')" . |
expand(section=STRING) | Разворачивает разделы accordion. Если раздел уже развернут, он остается развернутым. При вызове без аргументов разворачиваются все разделы accordion. Чтобы применить к определенному разделу, укажите идентификатор раздела: on="tap:myAccordion.expand(section='section-id')" . |
collapse(section=STRING) | Сворачивает разделы accordion. Если раздел уже свернут, он остается свернутым. При вызове без аргументов сворачиваются все разделы accordion. Чтобы применить к определенному разделу, укажите идентификатор раздела: on="tap:myAccordion.collapse(section='section-id')" . |
amp-carousel[type="slides"]
Действие | Описание |
---|---|
goToSlide(index=INTEGER) | Прокручивает карусель до слайда с указанной позицией. |
amp-image-lightbox
Действие | Описание |
---|---|
open (default) | Открывает лайтбокс, источником изображения в котором является изображение-инициатор действия. |
amp-lightbox
Действие | Описание |
---|---|
open (default) | Открывает лайтбокс. |
close | Закрывает лайтбокс. |
amp-list
Событие | Описание | Данные |
---|---|---|
changeToLayoutContainer | Обновляет макет amp-list до layout="CONTAINTER" , чтобы разрешить динамическое изменение размера. | |
fetch-error (низкий уровень доверия) | Срабатывает при сбое загрузки данных. | Нет |
amp-selector
Действие | Описание |
---|---|
clear | Снимает выбор со всех пунктов меню определенного amp-selector . |
selectUp(delta=INTEGER) | Перемещает область выбора вверх на значение `delta`. По умолчанию `delta` имеет значение -1. Если не выбран ни один из пунктов меню, выбранным станет значение первого пункта. |
selectDown(delta=INTEGER) | Перемещает область выбора вниз на значение `delta`. По умолчанию `delta` имеет значение 1. Если не выбран ни один из пунктов меню, выбранным станет значение первого пункта. |
toggle(index=INTEGER, value=BOOLEAN) | Переключает атрибут 'selected'. Если атрибут отсутствует, это действие добавляет его. Если атрибут присутствует, он удаляется. Вы можете форсированно добавить или удалить атрибут, указав логическое значение в аргументе `value`. Значение `true` форсированно добавит атрибут `selected` и не удалит его, если он уже присутствует. Значение `false` удалит атрибут, но не добавит его, если он отсутствует. |
amp-sidebar
Действие | Описание |
---|---|
open (default) | Открывает боковую панель. |
close | Закрывает боковую панель. |
toggle | Переключает состояние боковой панели. |
form
Действие | Описание |
---|---|
clear | Удаляет все данные, введенные в форму. |
submit | Отправляет форму. |
Особые цели
Система AMP предоставляет ряд целей, предъявляющих особые требования:
Цель: AMP
Цель AMP
обеспечивается средой выполнения AMP; в ней реализованы действия верхнего уровня, которые применяются ко всему документу.
Действие | Описание |
---|---|
setState({foo: 'bar'}) 1
| Требует amp-bind. Объединяет объектный литерал с привязываемым состоянием. |
1 При использовании с несколькими действиями последующие действия будут ожидать setState()
перед вызовом. Только одно setState()
допускается для каждого события.