Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

Benutzeraktivierung

Um sicherzustellen, dass Anwendungen keine APIs missbrauchen können, die ein schlechtes Benutzererlebnis schaffen, wenn das Verhalten unerwünscht ist, können einige APIs nur genutzt werden, wenn der Benutzer in einem Zustand der "aktiven Interaktion" ist. Das bedeutet, dass der Benutzer aktuell mit der Webseite interagiert oder mindestens einmal in der Vergangenheit mit der Seite interagiert hat. Browser beschränken den Zugriff auf sensible APIs wie Popups, Vollbild oder Vibrations-APIs auf aktive Benutzerinteraktionen, um zu verhindern, dass bösartige Skripte diese Funktionen missbrauchen. Diese Seite listet Webplattform-Funktionen auf, die nur nach einer Benutzeraktivierung verfügbar sind.

Eine Benutzeraktivierung impliziert entweder, dass der Benutzer derzeit mit der Seite interagiert, oder dass eine Interaktion seit dem Laden der Seite abgeschlossen wurde. In der Regel handelt es sich dabei um einen Klick auf einen Button oder eine andere Interaktion mit der Benutzeroberfläche.

Genauer gesagt ist ein aktivierungs-auslösendes Eingabeereignis ein Ereignis, welches:

  • das isTrusted Attribut auf true gesetzt hat, und
  • eine der folgenden Typen ist:
    • keydown (außer für die Esc-Taste, browserreservierte Shortcuts und bestimmte Tasten, die keine Benutzeraktivierung auslösen, was je nach Tastatur variieren kann, wie z.B. Caps Lock, Num Lock und Print Screen. Das Verhalten kann je nach Browser variieren.

    • mousedown

    • pointerdown (wenn pointerType "mouse" ist)

    • pointerup (wenn pointerType nicht "mouse" ist)

    • touchend

Wenn eine Aktivierung ausgelöst wurde, unterscheidet der Benutzeragent zwischen zwei Arten von Benutzeraktivierungsfensterzuständen: sticky und transient.

Vergleich zwischen transienter und sticky Aktivierung

Der Unterschied zwischen transienter und sticky Aktivierung besteht darin, dass die transiente Aktivierung nur für kurze Zeit anhält und in einigen Fällen beim Gebrauch einer geschützten Funktion aufgebraucht (deaktiviert) werden kann, während die sticky Aktivierung bis zum Ende der Session dauert.

Das Beschränken von Funktionen auf die transiente Aktivierung stellt sicher, dass diese nur verfügbar sind, wenn sie direkt von einem Benutzer ausgelöst werden. Sticky Aktivierung hingegen wird hauptsächlich verwendet, um Funktionen einzuschränken, die nicht automatisch beim Laden der Seite ausgelöst werden sollen, wie z.B. Popups.

Transiente Aktivierung

Transiente Aktivierung ist ein Fensterzustand, der anzeigt, dass ein Benutzer kürzlich einen Button gedrückt oder eine andere Benutzerinteraktion durchgeführt hat. Die transiente Aktivierung läuft nach einem Timeout ab (wenn sie nicht durch weitere Interaktion erneuert wird) und kann auch durch einige APIs aufgebraucht werden (wie z.B. Window.open()).

APIs, die transiente Aktivierung erfordern (Liste ist nicht abschließend):

Sticky Aktivierung

Sticky Aktivierung ist ein Fensterzustand, der anzeigt, dass ein Benutzer irgendwann in der Sitzung einen Button gedrückt, ein Menü verwendet oder eine andere Benutzerinteraktion durchgeführt hat. Sobald sie einmal gesetzt wurde, wird sie (im Gegensatz zur transienten Aktivierung) nicht zurückgesetzt.

APIs, die sticky Aktivierung erfordern (nicht abschließend):

BenutzerAktivierungs-API

Um programmatisch festzustellen, ob ein Fenster entweder sticky oder transiente Benutzeraktivierung hat, bietet die UserActivation API zwei Eigenschaften, die über navigator.userActivation verfügbar sind:

Siehe auch