Yah*_*hel 7 javascript jquery analytics google-analytics javascript-events
我正在为一个相当复杂的CRM制作跟踪脚本,以跟踪Google Analytics中的表单操作.我试图平衡与准确地跟踪表单操作的欲望需要永不防止形式从不工作.
现在,我知道做这样的事情是行不通的.
$('form').submit(function(){
_gaq.push(['_trackEvent', 'Form', 'Submit', $(this).attr('action')]);
});
Run Code Online (Sandbox Code Playgroud)
在有机会处理之前,DOM会卸载.
所以,很多示例代码推荐如下:
$('form').submit(function(e){
e.preventDefault();
var form = this;
_gaq.push(['_trackEvent', 'Form', 'Submit', $(this).attr('action')]);
//...do some other tracking stuff...
setTimeout(function(){
form.submit();
}, 400);
});
Run Code Online (Sandbox Code Playgroud)
在大多数情况下这是可靠的,但它让我感到紧张.如果e.preventDefault();在我之间触发基于DOM的提交之间发生了什么事情怎么办?我完全打破了这个形式.
我一直在寻找其他一些分析实现,我注意到这样的事情:
$('form').mousedown(function(){
_gaq.push(['_trackEvent', 'Form', 'Submit', $(this).attr('action')]);
});
$('form').keydown(function(e){
if(e.which===13) //if the keydown is the enter key
_gaq.push(['_trackEvent', 'Form', 'Submit', $(this).attr('action')]);
});
Run Code Online (Sandbox Code Playgroud)
基本上,不是中断表单提交,而是通过假设某人正在关闭或键入Enter来取代该表单,而不是提交该表单.显然,这将导致一定数量的误报,但它完全消除了使用e.preventDefault();,这在我看来消除了我可能阻止表单成功提交的风险.
所以,我的问题:
Mal*_*lio 30
他们在那里聚集了Googleplex非常聪明,他们有一天会想到这样的事情,因为这肯定会发生,而现在,确实如此.你为什么不试试这个:
$('form').submit(function(e){
e.preventDefault();
var form = this;
_gaq.push(['_trackEvent', 'Form', 'Submit', $(this).attr('action')]);
//...do some other tracking stuff...
_gaq.push(function(){
form.submit();
});
});
Run Code Online (Sandbox Code Playgroud)
这_gaq.pushthigamajigger顺序执行它的元素,所以你应该是开玩笑的罚款.
不,我不知道为什么我突然开始这么说.