Google Analytics interfiere con history.back () en el navegador android?
Tengo una aplicación móvil html5 donde todo existe en una sola página y uso history.back / popstate / etc para cambiar el contenido de la página (a través de jQuery Mobile). Estoy utilizando Google Analytics para realizar un seguimiento de varios eventos, y en una página de seguimiento si el usuario sale a través de un botón en particular:
$('#my-back-button').bind('tap', function() { _gaq.push(['_trackEvent', 'mycategory', 'myaction']); history.back(); return false; });
En el navegador androide 2.2 history.back () se llama pero onpopstate no se dispara y la página no se cambia. Si pongo window.onpopstate = function() { alert("!"); };
window.onpopstate = function() { alert("!"); };
Justo antes de la historia.back (), no veo ninguna alerta.
- Seleccionar texto con javascript y mostrar la ventana de copia de Android
- Bloqueo de hilo principal de Android que bloquea hilo de WebView
- La vista web de Android no tratará los eventos correctamente cuando el iframe esté presente
- Clics no funciona en WebView
- Cómo cambiar la posición del cursor en TextInput? (Reactivo-nativo)
Si invierto las dos líneas (history.back () primero, entonces _gaq.push), parece que funciona, pero no puedo confiar en este tipo de pedidos a través de mi código.
No se están lanzando excepciones. Funciona bien en iOS y Chrome de escritorio.
¿Alguna idea de por qué history.back () no funciona después de una llamada de Google Analytics?
- Uso de jquery móvil toque en lugar de haga clic
- Phonegap - manejo de la notificación push una vez que he dejado el ámbito del índice con window.location.replace
- Uncaught TypeError: Object # <Object> no tiene ningún método 'exec' en el archivo: ///android_asset/www/index.html
- Guardar la cadena de base64 como imagen usando phonegap?
- Pasar un objeto JavaScript usando addJavascriptInterface () en Android
- Angular y ionicPush no funciona en android
- PhoneGap 3.3 y la aplicación HTML de Mobile Services en Android
- ¿Cómo implementar la aplicación de compra mediante Cordova plugin?
Trate de envolver la llamada a _ gaq.push()
en un tiempo de espera asíncrono de 0:
$('#my-back-button').bind('tap', function() { setTimeout(function() { _gaq.push(['_trackEvent', 'mycategory', 'myaction']); }, 0); history.back(); return false; });
Esto permitirá que history.back()
ejecute primero antes de que Google Analytics afecte potencialmente a la pila del historial.
Hm, está bien una muy desagradable: ¿qué pasa si envuelves _gaq.push () en una nueva función y dejamos history.go () justo donde está?
Tal vez la llamada a google analytics añade una nueva entrada a la historia de la pila y history.back () sólo te lleva a la página que está en este momento.
O GA da un nuevo alcance a la historia.
Intente llamar a history.back () dos veces o utilice top.history.back () o window.history.back () o self.history.back ()
- ¿Es posible usar comandos adb para hacer clic en una vista encontrando su ID?
- Diseño de una vista después de cambiar el tamaño