Aktionen und Ereignisse
Das Attribut on
wird verwendet, um Event Handler für Elemente zu installieren.
Der Wert für die Syntax ist eine einfache domänenspezifische in der folgenden Form:
eventName:targetId[.methodName[(arg1=value, arg2=value)]]
Die nachfolgenden Tabelle beschreibt die einzelnen Elemente der Syntax.
Syntax | Erforderlich? | Beschreibung |
---|---|---|
eventName | ja | Das ist der Name des Events, welches das Element verfügbar macht. |
targetId | ja | Das ist die DOM ID für das Element oder ein vordefiniertes besonderes Ziel, für das eine Aktion als Reaktion auf das Event ausgeführt werden soll. Im folgenden Beispiel ist die targetId die DOM ID des Ziels amp-lightbox , photo-slides . <amp-lightbox id="photo-slides"></amp-lightbox> <button on="tap:photo-slides">Bilder anzeigen</button> |
methodName | Nein | Das ist für Elemente mit Standardaktionen. Dies ist die Methode, welche vom Zielelement (referenziert von In AMP sind Standardaktionen möglich, die in Elementen implementiert werden können. Wird |
arg=value | Nein | Manche Aktionen können (sofern sie dokumentiert sind) Argumente akzeptieren. Die Argumente werden in Klammern im Format key=value angegeben. Die zulässigen Werte sind:
|
Verarbeiten mehrerer Events
Um mehrere Events eines Elements abzuhören, müssen diese durch ein Semikolon ;
getrennt werden.
Beispiel: on="submit-success:lightbox1;submit-error:lightbox2"
Mehrere Aktionen für ein Event
Für dasselbe Ereignis können mehrere Aktionen nacheinander ausgeführt werden. Dazu werden die Aktionen durch ein Komma
Beispiel: on="tap:target1.actionA,target2.actionB"
Global definierte Events und Aktionen
AMP definiert das Event tap
als global. Dieses kann für jedes HTML Element (einschließlich AMP Elemente) abgehört werden.
AMP definiert außerdem die Aktionen hide
, show
und toggleVisibility
als global. Sie können auf jedem beliebigen HTML Element ausgelöst werden.
Ein Element kann nur angezeigt werden, wenn es zuvor durch die Aktion hide
oder toggleVisibility
oder mithilfe des Attributs hidden
ausgeblendet war. Die Aktion show
unterstützt keine Elemente, die mit der CSS Eigenschaft display:none
oder der AMP Eigenschaft layout=nodisplay
ausgeblendet waren.
In AMP ist beispielsweise Folgendes möglich:
<div id="warning-message">Warning...</div> <button on="tap:warning-message.hide">Cool, thanks!</button>
Elementspezifische Events
* – alle Elemente
Event | Beschreibung |
---|---|
tap | Wird ausgelöst, wenn das Element angeklickt/angetippt wird |
Eingabeelemente
Event | Beschreibung | Elemente | Daten |
---|---|---|---|
change | Wird ausgelöst, wenn der Wert des Elements geändert und bestätigt wird. Die Eigenschaften der Daten spiegeln diese in HTMLInputElement und HTMLSelectElement wider. | input | event.min |
input[type="radio"] ,input[type="checkbox"]
| event.checked | ||
select | event.min | ||
input-debounced | Wird ausgelöst, wenn der Wert des Elements geändert wird. Dies ist vergleichbar mit dem Standard Event change , dieses hier wird aber erst 300ms nach Ende der Wertänderung ausgelöst. | Elemente, die das Event input auslösen. | Entspricht den Event Daten von change . |
input-throttled | Wird ausgelöst, wenn der Wert des Elements geändert wird. Das ist vergleichbar mit dem Standard Event change , dieses hier wird aber so gedrosselt, dass es höchstens einmal alle 100 ms ausgelöst wird, während der Eingabewert sich ändert. | Elemente, die das Event input auslösen. | Entspricht den Event Daten von change . |
amp-accordion > section
Event | Beschreibung | Daten |
---|---|---|
expand | Wird ausgelöst, wenn sich ein Abschnitt im Akkordeonstil ausdehnt. | Keiner |
collapse | Wird ausgelöst, wenn ein Abschnitt im Akkordeonstil reduziert wird. | Keiner |
amp-carousel[type="slides"]
Event | Beschreibung | Daten |
---|---|---|
slideChange | Wird ausgelöst, wenn sich die aktuelle Folie des Karussells ändert. | // Slide number. |
amp-lightbox
Event | Beschreibung | Daten |
---|---|---|
lightboxOpen | Wird ausgelöst, wenn die Lightbox vollständig sichtbar ist. | Keiner |
lightboxClose | Wird ausgelöst, wenn die Lightbox vollständig geschlossen wird. | Keiner |
amp-list
Event | Beschreibung | Daten |
---|---|---|
changeToLayoutContainer | Aktualisiert das Layout von amp-list zu layout="CONTAINTER" , um eine dynamische Größenänderung zu ermöglichen. | |
fetch-error (low-trust) | Wird ausgelöst, wenn das Abrufen von Daten fehlschlägt. | Keiner |
amp-selector
Event | Blendet das Zielelement aus. | Daten |
---|---|---|
select | Wird ausgelöst, wenn eine Option ausgewählt oder abgewählt wird. | // Target element's "option" attribute value. |
amp-sidebar
Event | Beschreibung | Daten |
---|---|---|
sidebarOpen | Wird ausgelöst, wenn die Seitenleiste nach Ende des Übergangs vollständig geöffnet ist. | Keiner |
sidebarClose | Wird ausgelöst, wenn die Seitenleiste nach Ende des Übergangs vollständig geschlossen ist. | Keiner |
amp-state
Event | Beschreibung | Daten |
---|---|---|
fetch-error (low-trust) | Wird ausgelöst, wenn das Abrufen von Daten fehlschlägt. | Keiner |
amp-video, amp-youtube
Event | Beschreibung | Daten |
---|---|---|
firstPlay (low-trust) | Wird ausgelöst, wenn der Benutzer das Video zum ersten Mal abspielt. Bei Autoplayvideos wird es ausgelöst, sobald der Benutzer mit dem Video interagiert. Da dieses Ereignis eine niedrige Vertrauensebene hat, kann es die meisten Aktionen nicht auslösen. Es können nur Aktionen der niedrigen Vertrauensebene ausgeführt werden wie z. B. amp-animation . | |
firstPlay (low-trust) | Wird ausgelöst, wenn sich die Wiedergabeposition eines Videos geändert hat. AMP steuert die Häufigkeit des Ereignisses. Das vordefinierte Intervall beträgt 1 Sekunde. Da dieses Ereignis eine niedrige Vertrauensebene hat, kann es die meisten Aktionen nicht auslösen. Es können nur Aktionen der niedrigen Vertrauensebene ausgeführt werden wie z. B. amp-animation . | {time, percent} time gibt die aktuelle Zeit in Sekunden an, percent ist eine Zahl zwischen 0 und 1, und gibt die aktuelle Position als Prozentsatz der Gesamtzeit an. |
form
Event | Beschreibung | Daten |
---|---|---|
submit | Wird ausgelöst, wenn das Formular abgesendet wird. | |
submit-success | Wird ausgelöst, wenn die Formularübermittlung laut Rückantwort erfolgreich war. | // Response JSON. |
submit-error | Wird ausgelöst, wenn die Antwort auf die Formularübermittlung ein Fehler ist. | // Response JSON. |
valid | Wird ausgelöst, wenn das Formular gültig ist. | |
invalid | Fired when the form is invalid. |
Elementspezifische Aktionen
* – alle Elemente
Action | Beschreibung |
---|---|
hide | Blendet das Zielelement aus. |
show | Zeigt das Zielelement an. Wenn dadurch das Element autofocus sichtbar wird, springt der Fokus darauf. |
toggleVisibility | Schaltet die Sichtbarkeit des Zielelements um. Wenn dadurch das Element autofocus sichtbar wird, springt der Fokus darauf. |
toggleClass(class=STRING, force=BOOLEAN) | Schaltet die Klasse des Zielelements um. force ist optional und stellt sicher, dass die Klasse bei true nur hinzugefügt, aber nicht entfernt wird, und bei false nur entfernt, aber nicht hinzugefügt wird. |
scrollTo(duration=INTEGER, position=STRING) | Scrollt ein Element mit einer glatten Animation in den sichtbaren Bereich.duration ist optional. Gibt die Länge der Animation in Millisekunden an. Wenn nicht angegeben, wird ein Wert relativ zur Bildlaufdifferenz unter oder gleich 500 Millisekunden verwendet.position ist optional. Entweder top , center oder bottom (Standardwert ist top ). Gibt die Position des Elements im Verhältnis zum Viewport nach dem Scrollen an.Als Best Practice im Sinne der Barrierefreiheit sollte diese Aktion mit einem Aufruf von focus() kombiniert werden, um den Fokus auf das Element zu setzen, zu dem gescrollt wird. |
focus | Setzt den Fokus auf das Zielelement. Um den Fokus aufzuheben, muss ein anderes Element mittels focus den Fokus erhalten (in der Regel das übergeordnete Element). Aus Gründen der Barrierefreiheit raten wir dringend davon ab, den Fokus zu diesem Zweck auf body /documentElement zu setzen. |
amp-audio
Action | Beschreibung |
---|---|
play | Spielt das Audio ab. Ist eine No-Op, wenn das Element <amp-audio> dem Element <amp-story> untergeordnet ist. |
pause | Hält das Audio an. Ist eine No-Op, wenn das Element <amp-audio> dem Element <amp-story> untergeordnet ist. |
amp-bodymovin-animation
Aktion | Beschreibung |
---|---|
play | Spielt die Animation ab. |
pause | Hält die Animation an. |
stop | Stoppt die Animation. |
seekTo(time=INTEGER) | Setzt die currentTime der Animation auf den angegebenen Wert und hält die Animation an. |
seekTo(percent=[0,1]) | Verwendet den angegebenen Prozentwert, um die currentTime der Animation auf den angegebenen Wert festzulegen und die Animation anzuhalten. |
amp-accordion
Aktion | Beschreibung |
---|---|
toggle(section=STRING) | Schaltet die expanded und collapsed Zustände der amp-accordion Abschnitte um. Wenn es ohne Argumente aufgerufen wird, werden alle Abschnitte des Akkordeons umgeschaltet. Um einen bestimmten Abschnitt auszulösen, gib die ID des Abschnitts an: on="tap:myAccordion.toggle(section='section-id')" . |
expand(section=STRING) | Erweitert die Abschnitte des Akkordeons. Wenn ein Abschnitt bereits erweitert ist, bleibt er erweitert. Wenn es ohne Argumente aufgerufen wird, werden alle Abschnitte des Akkordeons erweitert. Um einen bestimmten Abschnitt auszulösen, gib die ID des Abschnitts an: on="tap:myAccordion.expand(section='section-id')" . |
collapse(section=STRING) | Reduziert die Abschnitte des Akkordeons. Wenn ein Abschnitt bereits reduziert ist, bleibt er reduziert. Wenn es ohne Argumente aufgerufen wird, werden alle Abschnitte des Akkordeons reduziert. Um einen bestimmten Abschnitt auszulösen, gib die ID des Abschnitts an: on="tap:myAccordion.collapse(section='section-id')" . |
amp-carousel[type="slides"]
Aktion | Beschreibung |
---|---|
goToSlide(index=INTEGER) | Dreht das Karussell bis zu einem bestimmten Folienindex. |
toggleAutoplay(toggleOn=true|false) | Schaltet den Autoplaystatus des Karussells um. toggleOn ist optional. |
amp-image-lightbox
Aktion | Beschreibung |
---|---|
open (default) | Öffnet die Image Lightbox, wobei das Bild, welches die Aktion ausgelöst hat, zum Quellbild wird. |
amp-lightbox
Aktion | Beschreibung |
---|---|
open (default) | Öffnet die Lightbox. |
close | Schließt die Lightbox. |
amp-lightbox-gallery
Aktion | Beschreibung |
---|---|
open | Öffnet die lightbox-gallery. Kann durch Tippen auf ein anderes Element ausgelöst werden, wenn du die ID des Bildes angibst: `on="tap:amp-lightbox-gallery.open(id='image-id')"`. |
amp-list
Aktion | Beschreibung |
---|---|
refresh | Aktualisiert Daten aus der src und rendert die Liste erneut. |
amp-live-list
Aktion | Beschreibung |
---|---|
update (default) | Aktualisiert die DOM Elemente, um aktualisierten Inhalt anzuzeigen. |
amp-selector
Aktion | Beschreibung |
---|---|
clear | Löscht alle Auswahlen von einem definierten amp-selector . |
selectUp(delta=INTEGER) | Verschiebt die Auswahl um den Wert von 'delta' nach oben. Der Standardwert von 'delta' ist -1. Wenn keine Optionen ausgewählt sind, erhält der ausgewählte Zustand den Wert der letzten Option. |
selectDown(delta=INTEGER) | Verschiebt die Auswahl um den Wert von 'delta' nach unten. Das Standardwert für 'delta' ist 1. Wenn keine Optionen ausgewählt sind, wird der ausgewählte Zustand zum Wert der ersten Option. |
toggle(index=INTEGER, value=BOOLEAN) | Schaltet die Anwendung von `selected` um. Wenn das Attribut select nicht vorhanden ist, wird es durch diese Aktion hinzugefügt. Wenn das Attribut select vorhanden ist, wird es durch diese Aktion entfernt. Du kannst das Hinzufügen oder Entfernen erzwingen und beibehalten, indem du einen Booleschen Wert in das Argument `value` aufnimmst. Der Wert `true` erzwingt das Hinzufügen des Attributs `selected` und entfernt es nicht, wenn es bereits vorhanden ist. Der Wert `false` entfernt das Attribut, fügt es jedoch nicht hinzu, wenn es nicht vorhanden ist. |
amp-sidebar
Aktion | Beschreibung |
---|---|
open (default) | Öffnet die Seitenleiste. |
close | Schließt die Seitenleiste. |
toggle | Schaltet den Status der Seitenleiste um. |
amp-state
Aktion | Beschreibung |
---|---|
refresh | Ruft Daten des Attributs `src` erneut ab, während der Browser Cache ignoriert wird. |
amp-user-notification
Aktion | Beschreibung |
---|---|
dismiss (default) | Blendet das referenzierte Benutzerbenachrichtigungselement aus. |
Videoelemente
Die folgenden Aktionen werden in den folgenden AMP Videoelementen unterstützt: amp-video
, amp-youtube
, amp-3q-player
, amp-brid-player
, amp-dailymotion
, amp-delight-player
, amp-ima-video
.
Aktion | Beschreibung |
---|---|
play | Spielt das Video ab. |
pause | Hält das Video an. |
mute | Schaltet das Video stumm. |
unmute | Hebt die Stummschaltung des Videos auf. |
fullscreencenter | Bringt das Video in den Vollbildmodus. |
form
Aktion | Beschreibung |
---|---|
clear | Löscht alle Werte aus den Eingabefeldern des Formulars. |
submit | Versendet das Formular. |
Sonderziele
Die folgenden Ziele werden vom AMP System bereitgestellt und haben besondere Anforderungen:
Ziel: AMP
Das Ziel AMP
wird von der AMP Runtime bereitgestellt und implementiert Aktionen der obersten Ebene, die für das gesamte Dokument gelten.
Aktion | Beschreibung |
---|---|
navigateTo(url=STRING, target=STRING, opener=BOOLEAN) | Navigiert das aktuelle Fenster zur angegebenen URL oder zum optional definierten Ziel, sofern angegeben (unterstützt derzeit nur Warnung: Es wird empfohlen, nach Möglichkeit normale |
closeOrNavigateTo(url=STRING, target=STRING, opener=BOOLEAN) | Versucht, das Fenster zu schließen, sofern dies zulässig ist. Andernfalls wird ähnlich wie bei der Aktion Warnung: Es wird empfohlen, nach Möglichkeit normale |
goBack | Navigiert in den Verlauf zurück. |
print | Öffnet den Druckdialog, um die aktuelle Seite zu drucken. |
scrollTo(id=STRING, duration=INTEGER, position=STRING) | Scrollt zur angegebenen Element ID auf der aktuellen Seite. |
optoutOfCid | Deaktiviert die Client ID Generierung für alle Bereiche. |
setState({foo: 'bar'}) 1
| Benötigt amp-bind. Führt ein Objektliteral in den bindbaren Status zusammen. |
pushState({foo: 'bar'}) 1
| Benötigt amp-bind. Führt ein Objektliteral in den bindbaren Status zusammen und verschiebt einen neuen Eintrag in den Browserverlaufsstapel. Da der Eintrag gelöscht wird, werden die vorherigen Variablenwerte wiederhergestellt (in diesem Beispiel |
1Bei Verwendung mit mehreren Aktionen, warten nachfolgende Aktionen auf setState()
oder pushState()
, um den vorherigen Aufruf abzuschließen. Pro Ereignis ist nur ein einziger setState()
oder pushState()
zulässig.
Target: amp-access
Das Ziel amp-access
wird von der Komponente amp-access bereitgestellt.
Für das Ziel amp-access
gelten aus folgenden Gründen spezielle Bedingungen:
- Dieses Ziel kann keine beliebige ID erhalten. Das Ziel ist immer
amp-access
. - The actions for
amp-access
are dynamic depending on the structure of the AMP Access Configuration.
Hier findest du weitere Informationen über die Verwendung des Ziels amp-access
.