我正试图通过Google Universal Analytics跟踪博客帖子的评论。我希望标签能够获取博客文章的名称,因此我正在使用jQuery来激活该事件。
到目前为止,我有以下代码(基于我用于其他网站的代码并且工作正常) - 显然我一定忽略了一些因为它不起作用的代码:
$(document).ready(function(){
$('#commentform').submit(function(){
var postname = $('h2.post-title').text();
ga('send', 'event', 'Engagement', 'Comment', postname, 5);
});
});
有什么想法吗?
(抱歉,我会链接到博客,但它尚未生效)
由于
答案 0 :(得分:2)
$(document).ready(function(){
$('#commentform').submit(function(){
var postname = $('h2.post-title').text();
ga('send', 'event', 'Engagement', 'Comment', postname, 5);
});
});
首先。此代码会将h2
标记的文本与post-title
中的类document
分配。获得帖子标题的更可靠方式是id。
其次,它可能无效,因为在Google Analitycs代码触发之前会提交表单。因此,您应该在analitycs完成发送数据后停止默认行为并提交表单。 (见:https://developers.google.com/analytics/devguides/collection/analyticsjs/advanced#hitCallback)
$( document ).ready( function() {
$( document ).on( 'submit', 'form#commentform', function( e ) {
var postname = $( '#post-title' ).text();
ga( 'send', {
'hitType': 'event',
'eventCategory': 'Engagement',
'eventAction': 'Comment',
'eventLabel': postname,
'eventValue': 5,
'hitCallback': function() {
//now you can submit the form
//$('#commentform').off('submit').trigger('submit');
$('#commentform').off('submit'); //unbind the event
$('#commentform')[0].submit(); //fire DOM element event, not jQuery event
}
});
return false;
});
});
修改强>
我刚刚意识到hitCallback
的代码可能不起作用。修改后的版本应调用DOM元素的事件,并在结果中调用表单。
<强> EDIT2:强> 更正了事件绑定,以防在触发document.ready()时表单不存在
答案 1 :(得分:0)
很难在不查看实际页面的情况下判断,但浏览器可能会在进行网络呼叫之前重定向到表单的提交。您需要一种等待ga完成的方法,然后完成提交表单。