我正在一个混合应用程序中,其中登录页面是用php编写的,其余应用程序是用react编写的。我想针对相同的SPA实施Google Analytics(分析)。我在componentWillMount中推送数据层,并通过index.php文件中的php代码添加了我的gtm脚本。
我面临的问题是第一次,每当页面从非反应页面转换为反应页面时,我的GTM层都不会将数据推送到gtm中。如果在React页面中进行移动,则一切工作正常。
非常感谢您的帮助。
谢谢
最佳答案
使用SPA时,您面临的问题非常普遍。
让我举一个例子:
当您从https://digitalmarketingbloq.com移至
https://digitalmarketingbloq.com/2018/08/07/how-to-filter-internal-traffic-in-google-analytics-with-google-tag-manager/
浏览器与服务器通信。页面正在呈现
然后GTM开始
在您的示例的首页视图中
您的SPA,因为与服务器建立了通信,所以可以正常工作
。但是在SPA中,从一页移动到另一页
发生在客户端。做GTM没有任何要采取的行动。
你怎么解决呢?
第一个选项是在“历史记录”(变量>配置>历史记录)部分中启用内置变量:
其次,创建一个触发器(“触发器”>“新建”>“历史记录更改”),以触发所有“历史记录”更改:
在预览模式下,您可以检查历史记录是否更改了您的SPA。在以下位置了解有关变量的更多信息:https://support.google.com/tagmanager/answer/7182738?hl=en&ref_topic=7182737#history在此处有关有关触发器的信息https://support.google.com/tagmanager/answer/7679322?hl=en。
如果这不起作用,则需要在转换完成后在SPA中开发“虚拟页面视图”事件。让我再给您一些角度。从页面A到页面B的转换完成后,触发以下事件:
dataLayer.push({
'virtualPageTitle': 'My Login Screen',
'virtualPageURL': 'https://www.my-example/login',
'event': 'VirtualPageview'
});
上面的代码会将virtualPageTitle和virtualPageURL作为事件推送到dataLayer,并将事件VirtualPageview推入。 GTM可以使用此功能,但是您需要创建2个用户定义的变量virtualPageTitle和virtualPageURL。触发器将为VirtualPageview。
希望这可以为您澄清一切。
关于javascript - GTM层未推送数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52639604/