Heim >Web-Frontend >js-Tutorial >Wie erkennt man Klicks auf die Zurück-Schaltfläche in Webbrowsern genau und vermeidet gleichzeitig falsche Auslöser?

Wie erkennt man Klicks auf die Zurück-Schaltfläche in Webbrowsern genau und vermeidet gleichzeitig falsche Auslöser?

Susan Sarandon
Susan SarandonOriginal
2024-10-22 14:43:54765Durchsuche

How to Accurately Detect Back Button Clicks in Web Browsers While Avoiding False Triggers?

Erkennen des Zurück-Button-Klicks in Webbrowsern: Behebung falscher Auslöser

Beim Versuch, den Zurück-Button-Klick eines Benutzers zu erkennen, verlassen sich Entwickler oft auf die window.onbeforeunload-Ereignis. Dieser Ansatz weist jedoch eine Einschränkung auf: Er wird auch ausgelöst, wenn andere Aktionen ausgeführt werden, beispielsweise das Aktualisieren der Seite.

Eine umfassendere Lösung besteht darin, zwischen Klicks auf die Zurück-Schaltfläche und anderen Ereignissen zu unterscheiden:

Verwendung der History-API:

Dieser Ansatz zielt auf Browser ab, die die History-API (history.pushState-Funktion) unterstützen:

<code class="js">window.onload = function () {
  if (typeof history.pushState === "function") {
    history.pushState("jibberish", null, null);
    window.onpopstate = function () {
      history.pushState('newjibberish', null, null);
      // Handle back or forward button clicks here (excluding refresh)
    };
  } else {
    ... // Handle non-History API browsers
  }
}</code>

Verwendung von Hash-Änderungen:

Für Browser ohne History-API-Unterstützung kann eine Fallback-Lösung mithilfe von Hash-Änderungen implementiert werden:

<code class="js">window.onload = function () {
  ... // Similar to History API code
} else {
  var ignoreHashChange = true;
  window.onhashchange = function () {
    if (!ignoreHashChange) {
      ignoreHashChange = true;
      window.location.hash = Math.random();
      // Detect back button click here
      // Note: Messes with hash symbol at the end of URL
    } else {
      ignoreHashChange = false;
    }
  };
}</code>

Behandlung von Aktualisierungsproblemen:

While Die oben genannten Lösungen befassen sich mit der Erkennung der Zurück-Schaltfläche, sie kümmern sich nicht um die Aktualisierung der Seite. Hierzu kann weiterhin window.onbeforeunload verwendet werden:

<code class="js">window.onbeforeunload = function (e) {
  if (e.preventDefault) {
    e.preventDefault();
    e.returnValue = '';
  }
}</code>

Das obige ist der detaillierte Inhalt vonWie erkennt man Klicks auf die Zurück-Schaltfläche in Webbrowsern genau und vermeidet gleichzeitig falsche Auslöser?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn