当前位置: 首页 > 知识库问答 >
问题:

Google Tag Manager和单页应用程序

顾跃
2023-03-14

我正在尝试将Google Tag Manager与我的Ember应用程序集成。我很难理解如何通知GTM页面已更改,并发送页面查看事件。

我在网上读了很多东西,主要是为“虚拟页面”或其他东西创建一个新的变量,但显然这远远不够理想。

我希望能够仅仅使用dataLayer.push来通知页面实际上发生了变化。有没有我没有找到的简单方法,或者在SPA上用GTM跟踪真的很痛苦?

共有2个答案

司徒阳曜
2023-03-14

您肯定需要将事件推送到dataLayer中,然后可以在GTM中触发GA页面浏览量标记。因此,要将事件推入DL:

dataLayer.push({'event':'virtualPageView'});

然后设置一个名为“vpv”的触发器,该触发器在名为“virtualPageView”的自定义事件上触发。将该触发器添加到GA标记。

最好的做法是在发送事件时发送虚拟页面的详细信息。通过这种方式,您可以设置将这些数据层属性值拉入页面视图调用的变量。所以你可以这样做:

dataLayer.push({
  'event':'virtualPageView',
  'page':{
    'title':'contact us',
    'url':'/contact'
  }
});

因此,您需要设置一个名为“DL-page title”的变量(例如),它是“page”的数据层值。“title”和另一个名为“DL-page url”的变量,该变量是“page”的数据层值。网址'。

然后,您可以设置一个新的通用分析标记,该标记具有您通常使用的所有页面视图设置,但具有2个要设置的字段(在更多设置下)。将title设置为{{DL-page title}},将page设置为{{DL-page url}}

最后,将触发器设置为“vpv”,您会发现每次将事件数据推送到数据层时,都会触发一个页面视图,其中包含虚拟页面的标题和虚拟url。

锺离德庸
2023-03-14

这是很久以前提出的问题。使用GTM的当前功能集,您可以轻松设置SPA页面跟踪,而无需太多麻烦。

首先,转到触发器并创建一个新触发器。选择History Change作为触发器类型。这将创建一个触发器,每当位置历史记录更改时触发。

然后创建一个新的TagUniversal Analytics类型,并按照下面的屏幕截图进行设置。

对于触发器,设置前面定义的历史更改触发器,就完成了。每次SPA中出现导航时,都会触发具有正确页面路径的页面视图事件。

编辑:正如trognaders在评论中指出的,这不会跟踪初始页面视图。为了补救,只需为您的标记添加一个在页面视图事件(所有页面)上触发的附加触发器。请参见下面的屏幕截图。

 类似资料:
  • 我的应用程序将是: -单页应用程序(例如在角度/主干中) -基于Spring MVC的服务器。 我发现了许多关于使用Spring-Security的示例,其中登录页面、注销页面等都是HTMLs。Spring Security根据会话状态定向到适当的页面。 但就我而言,登录/注销页面将使用JavaScript - 与服务器进行登录/注销的所有交互都是通过HTTP(REST样式URL和响应JSON)进

  • 问题内容: 我已经读过SPA及其优势。我发现其中大多数令人信服。有3个优点引起了我的怀疑。 问题: 您可以担任SPA的拥护者,并证明我对前三个陈述有误吗? 1. SPA对于响应速度快的网站非常有用: 对于所有中间状态,很难实现服务器端呈现-小视图状态无法很好地映射到URL。 单页应用程序的特点是能够重绘UI的任何部分,而无需服务器往返来检索HTML。这是通过具有处理数据的模型层和从模型读取的视图层

  • 不要用Angular angular: 老牌框架. 源于google. 难学, 难用. 文档垃圾. 13年7月做项目. angular 1. 它的文档: directive. 被无数人(老外)骂: 看不懂. 'The worst document that I've ever read' 3 个月没变. (很多留言都是一年以前的) 所以说最大的教训: google 也有很多很烂的东西. 关注度特别

  • 问题内容: 该单页应用(SPA)已经到了我们。随之而来的还有很多新功能,例如路由,客户端页面生命周期,MVC模式,MVVM模式,MV *模式等等。还有一些Javascript模式,例如AMD模式,Singleton,Facade,.. 还开发了许多SPA框架和库。我们可以在互联网上找到它的一些内容。它们是AngularJs,Reactjs,BackboneJs,DurandalJs 等等,以及许多

  • 问题内容: 在完全基于服务器端的呈现(非Web 2.0)中,部署服务器端代码将在页面重新加载时直接更新客户端页面。相比之下,在基于React的Single Page Application中,即使在更新React组件之后,仍然会有一些客户端使用这些组件的旧版本(它们仅在重新加载浏览器时才获得新版本,这种情况很少发生)->如果页面如果是完全SPA,则某些客户端可能会在几个小时后才刷新页面。 应采用什

  • 在完全基于服务器端的呈现(非Web 2.0)中,部署服务器端代码将在页面重新加载时直接更新客户端页面。相反,在基于React的单页应用程序中,即使在React组件更新后,仍然会有一些客户机使用旧版本的组件(他们只在浏览器重新加载时获得新版本,这应该很少发生)->如果页面是完全SPA,一些客户机可能在几个小时后才刷新页面。 应该使用什么技术来确保旧的组件版本不再被任何客户使用?