【问题标题】:Using Angulartics, Google Tag Manager and Analytics, with dynamic codes使用 Angulartics、谷歌标签管理器和分析,以及动态代码
【发布时间】:2018-01-30 14:51:20
【问题描述】:

我正在开发一个 Angular (1.6.8) 应用程序,我们在其中结合了 Google AnalyticsGoogle Tag Manager 扩展实现了 Angulartics 库。当我按照提供的说明进行操作时,这一切都运行良好。

但是我们似乎有一点特殊情况,我们正在构建的应用程序将被多个人使用,并且根据访问者我们从我们的 api 中获取用户设置(使用 url 参数来知道谁当时正在访问)。

这些用户可以在不同的 Angular 应用中管理他们的设置,正是在第二个应用中,他们向我们提供了他们的跟踪代码管理器标签和他们的分析代码。

现在最困难的部分来了(至少对我来说),谷歌标签管理器需要在我们的 html 头部添加一个脚本标签,但当时用户设置还没有从我们的 api 加载,所以我们不能为 Google 的脚本提供正确的跟踪代码管理器标记(此格式:GTM-XXXXX)。

有谁知道当我们动态加载跟踪代码时正确加载这些脚本的方法?或者这是不可能的?

感谢任何可以提供一些见解的人。

【问题讨论】:

  • 您找到解决方案了吗?我也有类似情况
  • @cularbytes,我已经添加了我最终做的事情作为答案,希望对您有所帮助。

标签: angularjs google-analytics google-tag-manager angulartics


【解决方案1】:

好吧,已经有一段时间了,我已经找到了一个可以完成这项工作的解决方案(不久前),我将展示我是如何到达那里的,以防其他人偶然发现我的问题。

结果很简单,我的 html 中有以下内容

<!-- Google Tag Manager -->
<script ng-bind-html="googleTagManagerScript"></script>
<!-- End Google Tag Manager -->

然后在我的 app.js 中,我通过 ajax 调用获取设置,当我得到结果时,我执行以下操作

$rootScope.pixels.tagmanager = value; // store the retrieved Tag Manager code in a variable
$rootScope.googleTagManagerScript = $sce.trustAsHtml("(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','"+$rootScope.pixels.tagmanager.code+"');");
$rootScope.googleTagManagerNoScript = $sce.trustAsHtml("<iframe src='https://www.googletagmanager.com/ns.html?id="+$rootScope.pixels.tagmanager.code+"' height='0' width='0' style='display:none;visibility:hidden'></iframe>");

所以基本上,只要一切可用,我就会将整个 Google 脚本放在一个变量中,而 ng-bind-html 会负责其余的工作。

我希望这是有道理的。

【讨论】:

  • 尚未对此进行测试,但听起来很有希望!不过需要注意的是:添加 NoScript 是没有用的,因为 NoScript 仅在没有可用的 javascript 时使用,如果 javascript 不可用,则 angular 甚至都不起作用,因此变量也不起作用。
  • @CularBytes 啊,这是一个很好的观点,我从来没有意识到 NoScript 就是这样做的,哈哈,添加它确实毫无意义,谢谢!
猜你喜欢
  • 1970-01-01
  • 2012-11-20
  • 2014-07-15
  • 1970-01-01
  • 2014-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-12
相关资源
最近更新 更多