使用jQuery进行表单提交的Google Analytics事件跟踪

使用jQuery进行表单提交的Google Analytics事件跟踪,jquery,google-analytics,Jquery,Google Analytics,我目前正在玩谷歌分析事件跟踪,可以看到一些插件浮动,但我试图看看我是否可以把一些东西放在一起,这将是非常通用和简单的使用 <script> $("form").submit(function(){ _gaq.push(['_trackEvent', $(this).attr('name'), 'Form Submission', 'The-form-name',, false]); }); </script> 我想,如果我的页面上有一些简单的代码片段,这样我就可

我目前正在玩谷歌分析事件跟踪,可以看到一些插件浮动,但我试图看看我是否可以把一些东西放在一起,这将是非常通用和简单的使用

<script>
$("form").submit(function(){
    _gaq.push(['_trackEvent', $(this).attr('name'), 'Form Submission', 'The-form-name',, false]);
});
</script>
我想,如果我的页面上有一些简单的代码片段,这样我就可以跟踪表单的提交时间,并利用表单名称和表单id,在提交表单时可以看到它们

我想我可能可以使用这个简单的方法来跟踪链接点击等,但我只是想知道是否有人曾经做过类似的事情,并会有任何建议,这是否是一个可靠的方法跟踪谷歌分析事件

我之所以希望这样做,是因为我会在网站上动态生成所有内容,并且大多数标记都会有与之相关联的id,这样我就不需要使用onclick事件处理程序之类的东西直接将它们添加到html中


感谢您的建议,您可以这样做,但您必须延迟表单提交,以便留出时间让trackEvent继续进行。否则表单将立即提交,从而阻止trackEvent完成并发送出去。这同样适用于跟踪点击

这应该起作用:

<script>
$("form").submit(function(e){
    e.preventDefault();//prevent the form from being submitted
    _gaq.push(['_trackEvent', $(this).attr('name'), 'Form Submission', 'The-form-name',, false]);
    $(this).off('submit');//prevent 'this' jquery submit event recursion
    setTimeout(function(){//delay the form submit
        e.currentTarget.submit();//submit form after the track event had time to complete
    }, 350);//350 ms
});
</script>
注意:虽然这保证您的表单将被提交,但并不保证提交事件将被100%的时间跟踪。但是200ms-350ms应该足够好,可以得到90%以上的正确跟踪。编辑:我考虑了高延迟蜂窝网络的延迟

在此特定示例中,表单在低延迟连接上提交。一个完整的GoogleAdTracker脚本最多可以发出4个请求,每个请求的延迟在350ms以下的30-40ms范围内。从技术上讲,您只需考虑发送到Google的第一个请求的延迟,就可以将事件保存在Google Analytics中。

确保100%跟踪事件的唯一其他方法是使用命中回调,如下所述:
但是,命中回调的警告是,它可能会阻止表单提交,因此此处不建议使用命中回调方法。

您可以这样做,但您必须延迟表单提交,以便留出时间让trackEvent继续。否则表单将立即提交,从而阻止trackEvent完成并发送出去。这同样适用于跟踪点击

这应该起作用:

<script>
$("form").submit(function(e){
    e.preventDefault();//prevent the form from being submitted
    _gaq.push(['_trackEvent', $(this).attr('name'), 'Form Submission', 'The-form-name',, false]);
    $(this).off('submit');//prevent 'this' jquery submit event recursion
    setTimeout(function(){//delay the form submit
        e.currentTarget.submit();//submit form after the track event had time to complete
    }, 350);//350 ms
});
</script>
注意:虽然这保证您的表单将被提交,但并不保证提交事件将被100%的时间跟踪。但是200ms-350ms应该足够好,可以得到90%以上的正确跟踪。编辑:我考虑了高延迟蜂窝网络的延迟

在此特定示例中,表单在低延迟连接上提交。一个完整的GoogleAdTracker脚本最多可以发出4个请求,每个请求的延迟在350ms以下的30-40ms范围内。从技术上讲,您只需考虑发送到Google的第一个请求的延迟,就可以将事件保存在Google Analytics中。

确保100%跟踪事件的唯一其他方法是使用命中回调,如下所述:
但是,命中回调的警告是,它可能会阻止表单的提交,因此这里不建议使用命中回调方法。

您可以始终将两者结合使用。使用带有超时的hitCallback作为回退-如果它在1-2秒内没有返回任何内容,请强制重定向。@MisterPhilip是的,我知道。但这个问题的目的是简单明了的。所以我不想给你带来不必要的麻烦。@nemo我不完全同意你的编辑。就GA而言,跟踪事件在技术上只是一个请求。您显示的其他内容似乎是由其他谷歌广告脚本并行生成的。i、 e.4关于这个问题,请求不是规范。此外,只需发送跟踪请求。不管你是否得到了跟踪图像的响应。所以延迟只是一种方式。为了解决这个问题,我做了重新编辑,同时保留了您的示例。@hexalys谢谢您!我主要只是想添加屏幕截图来给出一个想法,很抱歉在描述它时不够精确。谢谢@guidoAlterPettinari我在setTimeout中使用了错误的范围:现在更正!您可以使用更合适的更新代码,而不是“表单”。您始终可以将两者结合起来。使用带有超时的hitCallback作为回退-如果它在1-2秒内没有返回任何内容,请强制重定向。@MisterPhilip是的,我知道。但这个问题的目的是简单明了的。所以我不想带来不必要的额外的麻烦。@nemo我还没有完成
在你的编辑上。就GA而言,跟踪事件在技术上只是一个请求。您显示的其他内容似乎是由其他谷歌广告脚本并行生成的。i、 e.4关于这个问题,请求不是规范。此外,只需发送跟踪请求。不管你是否得到了跟踪图像的响应。所以延迟只是一种方式。为了解决这个问题,我做了重新编辑,同时保留了您的示例。@hexalys谢谢您!我主要只是想添加屏幕截图来给出一个想法,很抱歉在描述它时不够精确。谢谢@guidoAlterPettinari我在setTimeout中使用了错误的范围:现在更正!您可以使用更合适的更新代码而不是“表单”。