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?

下一篇: Can a Heroku app use different/multiple ports?