Google Analytics interfère avec history.back () dans le navigateur Android?

J'ai une application mobile html5 où tout existe sur une seule page et j'utilise history.back / popstate / etc pour modifier le contenu de la page (via jQuery Mobile). J'utilise Google Analytics pour suivre différents événements, et sur une seule page, je surveille si l'utilisateur sort via un bouton particulier:

$('#my-back-button').bind('tap', function() { _gaq.push(['_trackEvent', 'mycategory', 'myaction']); history.back(); return false; }); 

Dans le navigateur android 2.2 history.back () est appelé, mais onpopstate n'est pas déclenché et la page n'est pas modifiée. Si je place window.onpopstate = function() { alert("!"); }; window.onpopstate = function() { alert("!"); }; Juste avant l'historique.back (), je ne vois aucune alerte.

  • Windows - Gestionnaire SDK Android ne répertoriant aucune plate-forme ou paquetage à installer
  • Incorporation de ZXing dans l'application Android
  • Broadcast Receiver appelle deux fois
  • Alternatives à google maps api
  • Comment obtenir des données du service à l'activité
  • Initialisation de l'application Android
  • Si je reverse les deux lignes (history.back () d'abord, puis _gaq.push), cela semble fonctionner, mais je ne peux pas compter sur ce type de commande tout au long de mon code.

    Aucune exception n'est lancée. Cela fonctionne bien dans iOS et Chrome de bureau.

    Toutes les idées pourquoi history.back () ne fonctionne pas après un appel Google Analytics?

  • Comment changer le nom de l'application Android et l'ID d'une application existante?
  • ADT nécessite 'org.eclipse.wst.sse.core 0.0.0' mais il n'a pas été trouvé
  • Android: publication Http avec paramètres ne fonctionnant pas
  • Développer deux applications Android et communiquer entre deux
  • Android applique un style à TextView personnalisé
  • Comment réparer "Support-v13: 19.1.0 dépend des bibliothèques mais n'est pas une bibliothèque elle-même"?
  • 3 Solutions collect form web for “Google Analytics interfère avec history.back () dans le navigateur Android?”

    Essayez d'envelopper l'appel à _ gaq.push() dans un délai d' gaq.push() de 0:

     $('#my-back-button').bind('tap', function() { setTimeout(function() { _gaq.push(['_trackEvent', 'mycategory', 'myaction']); }, 0); history.back(); return false; }); 

    Cela permettra à history.back() d'exécuter d'abord avant que Google Analytics affecte potentiellement la pile d'historique.

    Hm, d'accord, c'est vraiment méchant: que se passe-t-il si vous enveloppez _gaq.push () dans une nouvelle fonction et quittez history.go () juste là où il se trouve?

    Peut-être que l'appel à Google Analytics ajoute une nouvelle entrée à la pile d'historique et history.back () vous amène à la page que vous êtes en ce moment.

    Ou GA donne une nouvelle portée à l'histoire.

    Essayez d'appeler history.back () deux fois ou utilisez top.history.back () ou window.history.back () ou self.history.back ()

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.