2015-05-22 6 views
5

wir versuchen, einige gründliche Daten über die Aktivitäten unserer Benutzer zu erhalten, also bauen wir uns eine Bibliothek auf, die die Zeit aufzeichnet, die Benutzer auf der gegebenen Seite verbringen. Wir messen Zeiten mit TimeMe Bibliothek. Wir versuchen, die measurments auf unserem Server nur einmal zu senden, wenn der Benutzer ändern Seite, beenden Registerkarte Browser schließen usw.Wie erkennt man das Schließen des mobilen Browsers (Android Chrome) mit Javascript?

Aktuell können wir auf zwei Ereignisse hören:

  1. Seite: Vor-Entladen auf dem Dokument (wegen der Schienen turbolinks)
  2. beforeunload auf Fenster (andere Fälle)

Es funktioniert gut auf Desktop-Browsern. Diese Listener erfassen jedoch einige Ereignisse nicht. Wenn Sie beispielsweise die Website im mobilen Browser (Android Chrome) aufrufen und dann diesen Browser schließen, werden diese Listener nicht ausgelöst.

Meine Frage ist, wie können wir das beheben? Welches Ereignis erstellt der mobile Browser, wenn er geschlossen wird?

Vielen Dank für Ihren Rat.

+0

Vielleicht möchten Sie Server-Side-Code betrachten, die komplexer sein könnte ... Ich glaube nicht, dass es eine zuverlässige Möglichkeit ist über Javascript zu erkennen. – brso05

+0

Versuchen Sie, den Ereignishandler über 'window.addEventListener (" beforeunload ", unloadHandler) hinzuzufügen;' wobei 'unloadHandler' eine Funktion ist, die das Ereignisobjekt als erstes Argument empfängt. – marekful

+0

@marekful Nein, hilft nicht. – piko

Antwort

0

Sie können das Schließen des Browsers niemals durch JavaScript erkennen, JavaScript ist eine dynamisch typisierte Sprache und es werden Browser-Engines zur Ausführung verwendet. Aber wenn Sie den Browser schließen wollen, wie kann dann der JavaScript-Code ausgeführt werden? Also, das ist überhaupt nicht möglich. aber in fällen mit google chrome zu tun, da android ist ein betriebssystem und unterstützt die kompilierung von javascript, denn v8 ist auch die ausführungsmaschine für chrome von google bereitgestellt. Das folgende Skript könnte also zu einer richtigen Spur führen.

$ (Fenster) .bind ('beforeunload', function() {
if (iWantTo) {
return "Verlass mich nicht!";
}
});

Blockquote 
Verwandte Themen