我一直在尝试为Google代码管理器自动生成事件。
我们有一个脚本,我们使用传统的异步分析,为下载,电子邮件和外部点击生成onclick事件。
我将其修改为生成GTM事件而不是标准分析事件,如下所示:
if (typeof jQuery != 'undefined') {
jQuery(document).ready(function($) {
var filetypes = /\.(zip|exe|pdf|doc*|xls*|ppt*|mp3)$/i;
var baseHref = '';
if (jQuery('base').attr('href') != undefined)
baseHref = jQuery('base').attr('href');
jQuery('a').each(function() {
var href = jQuery(this).attr('href');
if (href && (href.match(/^https?\:/i)) && (!href.match(document.domain))) {
jQuery(this).click(function() {
var extLink = href.replace(/^https?\:\/\//i, '');
dataLayer.push ({'eventCategory' : 'External', 'eventAction' : 'click', 'eventLabel': extLink, 'event' : 'autoevent'});
if (jQuery(this).attr('target') != undefined && jQuery(this).attr('target').toLowerCase() != '_blank') {
setTimeout(function() { location.href = href; }, 200);
return false;
}
});
}
else if (href && href.match(/^mailto\:/i)) {
jQuery(this).click(function() {
var mailLink = href.replace(/^mailto\:/i, '');
dataLayer.push({'eventCategory' : 'Email', 'eventAction' : 'click', 'eventLabel': mailLink, 'event' : 'autoevent'});
});
}
else if (href && href.match(filetypes)) {
jQuery(this).click(function() {
var extension = (/[.]/.exec(href)) ? /[^.]+$/.exec(href) : undefined;
var filePath = href;
dataLayer.push({'eventCategory' : 'Download', 'eventAction' : 'click', 'eventLabel': filePath', 'event' : 'autoevent'});
if (jQuery(this).attr('target') != undefined && jQuery(this).attr('target').toLowerCase() != '_blank') {
setTimeout(function() { location.href = baseHref + href; }, 200);
return false;
}
});
}
});
});
}
在GTM内部,我会监听一个名为autoevent的事件,它会生成一个包含Category,Action和Label值的事件标记。
到目前为止,我一直在尝试使用wordpress网站。
我的第一次尝试在头部宣布了上述脚本。 根据需要,GTM代码在正文中。
在chrome中使用GA调试器,我收到一个JS错误Uncaught SyntaxError:意外的标识符 在发布dataLayer推送的行上。
我的Javascript sux,所以我猜测并将dataLayer声明为GTM代码之上,并将自动生成脚本移动到GTM代码下方,以便完全声明dataLayer。 发生同样的错误。
有什么建议吗?
答案 0 :(得分:0)
你在filePath上有一个额外的单引号:
dataLayer.push({'eventCategory' : 'Download', 'eventAction' : 'click', 'eventLabel': filePath', 'event' : 'autoevent'});