我正在关注这个:
但在我的真实代码中,我使用谷歌标签管理器来管理谷歌分析。所以我的网站头部只有一个属于 gtm 的脚本:
(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-P8F58CT');
ga('create', 'UA-124402662-1', 'auto'); // Uncaught ReferenceError: ga is not defined
如您所见,我ga('create', 'UA-124402662-1', 'auto')在该谷歌标签管理器之后添加了(与我在问题的第一行中链接的教程相同)。我有一个ga('send', 'pageview', newURL);代码,当页面使用 ajax 更改时将执行该代码。
问题是它抛出:(正如我在上面的代码中评论的那样)
未捕获的 ReferenceError:未定义 ga
我该如何解决?有人告诉我根本不需要添加ga('create', 'UA-124402662-1', 'auto');,gtm 会处理这一切。但在我的测试中:
当我打开我的网站(主页)并
ga('send', 'pageview', "/adv");在控制台中运行时,谷歌分析没有任何变化,它仍然指向主页。当我打开我的网站(主页)并运行
ga('create', 'UA-124402662-1', 'auto');然后运行ga('send', 'pageview', "/adv");时,谷歌分析将更改为/adv(不再是主页)。所以我相信ga('create', 'UA-124402662-1', 'auto');是需要的。但为什么它是未定义的?