Google Analytics会在Android浏览器中干扰history.back()?
我有一个html5移动应用程序,其中的一切都存在于一个页面上,我使用history.back / popstate / etc来更改页面内容(通过jQuery Mobile)。 我正在使用Google Analytics(分析)来跟踪各种事件,并在一个页面上跟踪用户是否通过特定按钮退出:
$('#my-back-button').bind('tap', function() {
_gaq.push(['_trackEvent', 'mycategory', 'myaction']);
history.back();
return false;
});
在android 2.2浏览器中,history.back()被调用,但onpopstate没有被触发,页面也没有改变。 如果我把window.onpopstate = function() { alert("!"); };
window.onpopstate = function() { alert("!"); };
在history.back()之前,我看不到任何警报。
如果我倒过去两行(history.back()第一次,然后_gaq.push),它似乎工作,但我不能依赖这种排序在我的代码。
没有例外被抛出。 它适用于iOS和桌面版Chrome。
任何想法为什么history.back()在谷歌分析调用后不起作用?
尝试将呼叫包装到_ gaq.push()
,并在异步超时时间为0的情况下进行:
$('#my-back-button').bind('tap', function() {
setTimeout(function() {
_gaq.push(['_trackEvent', 'mycategory', 'myaction']);
}, 0);
history.back();
return false;
});
这将允许history.back()
在Google Analytics潜在影响历史堆栈之前执行。
嗯,好吧,真的很糟糕:如果将_gaq.push()换成新函数并将history.go()保留在原来的位置,会发生什么?
也许呼吁谷歌分析添加一个新的条目到历史堆栈和history.back()只是带你到您目前的页面。
或者GA为历史提供了新的范围。
尝试调用history.back()两次或使用top.history.back()或window.history.back()或self.history.back()
链接地址: http://www.djcxy.com/p/56071.html上一篇: Google Analytics interferes with history.back() in android browser?