提交按钮上的Ajax请求? (用于分析 - 事件跟踪)

时间:2014-03-04 14:42:58

标签: javascript jquery http google-analytics event-tracking

我有一个输入按钮,其中包含谷歌分析代码(点击检测):

<input type="button" onclick="ga('send',...);"/>

此按钮提交,我 在网络面板中查看google服务器的请求。

enter image description here

问题是当按钮是提交按钮时:

<input type="submit" onclick="ga('send',...);"/>

enter image description here

我知道它不起作用。

可以解决它: jQ解决方案:(例如)

e.preventDefault();
ga('send',...);
$(this).click();

但我不是在解决问题之后。我正在追踪之所以发生这种情况

显而易见的原因是因为页面重定向/发布。

但我可以这样做:

<input type="submit" onclick="for (var i=0;i<5;i++) console.log(i);"/>

代码有效 :(就像我可以写return false

显示数字并提交

enter image description here

我知道ajax是一个异步操作(应该是),但内部会发生什么阻止请求执行? (与其他js代码相反

注意:我不关心回应。该请求具有包含数据的查询字符串。 google servers使用查询字符串等待此请求。 (谷歌仪表板不显示任何收到的点击)

(这个问题出现在我被要求对某些按钮(有些确实提交)进行点击检测之后,并在检查后,google doesn't say anything about those kind of buttons

1 个答案:

答案 0 :(得分:0)

不是解释(我想要的),但是在提交/重定向时解决了谷歌分析问题:

在底部包含此代码:

$("body").on('click', '[data-ga]', function (e)
{
    var _ = $(this);
    if (_.data('prevented') == 1)
    {
        _.removeData("prevented");
        return true;
    }

    e.preventDefault();
    _.data('prevented', 1);
    window.__gacb = function () { _[0].click(); };
    new Function(_.data('ga'))();
    return false;
});

对于提交/重定向的任何元素:

 <input type='submit'  data-ga="ga('send', 'Forms', { 'hitCallback':function (){window.__gacb()}});" />

谷歌有这个属性hitCallback,这是一个回调,所以我可以在识别出我第一次被阻止后触发点击。