Javascript 提交表单时使用_trackEvent进行Google Analytics事件跟踪
当用户单击我的注册表单上的提交按钮时,我正在尝试跟踪事件 我的页面中有以下代码: Google Analytics-在我结束前一刻Javascript 提交表单时使用_trackEvent进行Google Analytics事件跟踪,javascript,google-analytics,dom-events,event-tracking,Javascript,Google Analytics,Dom Events,Event Tracking,当用户单击我的注册表单上的提交按钮时,我正在尝试跟踪事件 我的页面中有以下代码: Google Analytics-在我结束前一刻标记: <script type="text/javascript"> var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-XXXXXXXX-XX']); _gaq.push(['_trackPageview']); (function() { var ga = docume
标记:
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXXXX-XX']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
<input onclick="_gaq.push(['_trackEvent', 'Forms', 'Submit', 'mylist', , false]);" name="submit" id="af-submit-image-873297158" type="image" class="image img-responsive" style="background: none;" alt="Submit Form" src="img/orange_free_instant_access_button.png" tabindex="503">
var _gaq=_gaq | |[];
_gaq.push(['''u setAccount','UA-XXXXXXXX-XX']);
_gaq.push([''u trackPageview']);
(功能(){
var ga=document.createElement('script');ga.type='text/javascript';ga.async=true;
ga.src=('https:'==document.location.protocol?'https://ssl' : 'http://www“)+”.google analytics.com/ga.js';
var s=document.getElementsByTagName('script')[0];s.parentNode.insertBefore(ga,s);
})();
表单事件跟踪:
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXXXX-XX']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
<input onclick="_gaq.push(['_trackEvent', 'Forms', 'Submit', 'mylist', , false]);" name="submit" id="af-submit-image-873297158" type="image" class="image img-responsive" style="background: none;" alt="Submit Form" src="img/orange_free_instant_access_button.png" tabindex="503">
每次我加载页面并单击表单时,事件都会记录在分析的实时事件部分。这似乎很有效,但在过去24小时内,总共有100多个已知注册到该列表中,只有少数被记录。(总共12次,其中大部分是我自己提交的测试)
我只能假设事件没有被发送到Google,但就我所知,代码看起来很好,我还可以看到事件通过控制台使用GA调试插件发送
我尝试过通过jQuery调用触发事件,我尝试过各种事件,比如onmousedown&实际的表单提交事件,但什么都没有。(我甚至从analytics.js回滚到ga.js,创建了一个全新的配置文件,因为我认为这可能是一个“测试版”问题。)
我确实怀疑在页面更改位置之前没有及时触发事件,但当我测试自己时,每次都会触发事件。我试过Chrome、FF和IE10
在我修复这个问题的过程中,我在页面主体上附加了一个onload事件,我可以看到这些事件正在被记录下来,即使是来自实时访客。问题似乎集中在表单事件上。Ok看起来是时候回答我自己的问题了,以利于其他人: 我做了一些挖掘,这是由于在事件被正确跟踪之前页面更改位置引起的。多亏了Joel Peterson的一篇文章,我想出了以下代码:
jQuery(document).ready(function($){
$('form').submit(function(event){
//if analytics object exists
if(window._gat){
event.preventDefault();
optinForm = this;
_gaq.push(['_set','hitCallback', function(){
optinForm.submit();
}]);
_gaq.push(['_trackEvent', 'Forms', 'Submit', 'hbsanewtraffic']);
}
//if no analytics object, service as normal
});
});
它使用回调函数确保先发送事件,然后提交我的表单。Replace\u gaq.push([''u trackEvent','Forms','Submit','mylist',false])
下面是一个例子
ga(“发送”、“事件”、“类别”、“行动”)
例如:
ga(“发送”、“事件”、“表格”、“提交”)
作为onClick属性的值放置。这不会导致循环吗?在回调中提交表单肯定会触发$('form')。再次提交函数?不,调用哪个提交方法的optinfo引用DOM对象,而不是jQuery对象。