Heim > Web-Frontend > Front-End-Fragen und Antworten > Wenn der Vue-Browser geschlossen wird, werden Sie gefragt, ob er geschlossen werden soll

Wenn der Vue-Browser geschlossen wird, werden Sie gefragt, ob er geschlossen werden soll

WBOY
Freigeben: 2023-05-24 12:13:37
Original
1526 Leute haben es durchsucht

Da Single-Page-Anwendungen immer beliebter werden, ist Vue als Mainstream-Front-End-Framework weit verbreitet. Schwieriger ist jedoch die Implementierung von Eingabeaufforderungen beim Schließen des Browsers in der Anwendung.

Normalerweise ist es wahrscheinlich, dass Benutzer beim Schließen des Browsers versehentlich alle Browser-Registerkarten bedienen oder schließen. Wenn wir zu diesem Zeitpunkt nicht gespeicherte Daten oder andere Daten in der Anwendung haben, die bereinigt werden müssen, kann dies zu Problemen führen.

Um dieses Problem zu lösen, müssen wir der Vue-Anwendung eine Eingabeaufforderungsebene hinzufügen. Wenn der Benutzer versucht, den Browser-Tab zu schließen, wird er gefragt, ob er ihn wirklich schließen möchte.

Vue stellt das Browser-Schließereignis beforeunload bereit, das ausgelöst wird, wenn der Browser geschlossen oder die Seite aktualisiert wird. Wir können das Beforeunload-Ereignis der Seite in der Lebenszyklusfunktion von Vue abhören:

created() {
  window.addEventListener('beforeunload', this.handleBeforeunload)
},
beforeDestroy() {
  window.removeEventListener('beforeunload', this.handleBeforeunload)
},
methods: {
  handleBeforeunload(event) {
    event.returnValue = '您确定要关闭该页面吗?'
  }
}
Nach dem Login kopieren

Im obigen Code fügen wir das Ereignisabhören in der erstellten Funktion hinzu. Wenn der Browser die Seite schließt oder aktualisiert, wird die Funktion handleBeforeunload ausgelöst. In dieser Funktion verwenden wir event.returnValue, um die Eingabeaufforderungsinformationen zurückzugeben und die Eingabeaufforderung zu implementieren, wenn die Anwendung geschlossen wird.

Es ist zu beachten, dass es zu Konflikten kommen kann, wenn unsere Vue-Anwendung das Browser-Schließereignis zusammen mit anderen JS-Skripten steuert. Derzeit besteht eine bessere Lösung darin, Vue-Router Guard zu verwenden, um Routing-Eingabeaufforderungen detaillierter zu steuern.

Im Vue-Router können wir den beforeRouteLeave-Guard verwenden, der ausgelöst wird, bevor die Route verlässt. Wir können entscheiden, ob eine Eingabeaufforderung angezeigt wird, basierend darauf, ob die aktuelle Route und die Zielroute übereinstimmen und ob der Benutzer bestimmte Vorgänge ausgeführt hat:

beforeRouteLeave(to, from, next) {
  if (this.formDirty) {
    if (confirm('您确定要离开该页面吗?')) {
      next()
    } else {
      next(false)
    }
  } else {
    next()
  }
}
Nach dem Login kopieren

Im obigen Code ermitteln wir zunächst, ob nicht gespeicherte Daten vorhanden sind (d. h. die formDirty-Variable) und Wenn dies der Fall ist, wird ein Eingabeaufforderungsfeld angezeigt und der Benutzer entscheidet anhand seiner Auswahl, ob er die aktuelle Seite verlassen möchte. Wenn es nicht vorhanden ist, gehen Sie direkt zur nächsten Route.

Kurz gesagt: Unabhängig davon, ob wir beforeunload in einer Vue-Anwendung oder beforeRouteLeave im Vue-Router verwenden, können wir durch einfachen Code Eingabeaufforderungen implementieren, wenn der Browser geschlossen wird, was das Erlebnis verbessert und gleichzeitig Datenverluste oder andere Probleme vermeidet.

Das obige ist der detaillierte Inhalt vonWenn der Vue-Browser geschlossen wird, werden Sie gefragt, ob er geschlossen werden soll. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage