我已在Chrome扩展程序页面中添加了此gtm代码(由内容脚本in和iframe注入)
// <!-- Google Tag Manager -->
(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','owDataLayer','GTM-XXXXXXX');
// <!-- End Google Tag Manager -->
我确认已成功加载gtm.js文件。
Request URL:https://www.googletagmanager.com/gtm.js?id=GTM-XXXXXX&l=dataLayer
Request Method:GET
Status Code:200 (from disk cache)
我有一个按钮,下面的代码已附加到按钮的点击事件
dataLayer.push({
'event': 'tab click',
'user id' : 123,
'description' : "Social"
});
当我点击按钮dataLayer.push工作成功但没有任何内容发送到https://www.google-analytics.com/r/collect?
在开发人员工具栏窗口的“网络”选项卡中没有任何活动。
有人可以帮我解决这个问题吗?提前谢谢!
答案 0 :(得分:5)
本周末我花了很多时间阅读gtm和Google Chrome扩展程序。 最后我得到this blog post by Simo Ahava。他用解决方案讨论了完全相同的问题。感谢Simo。
这是他博客文章的部分粘贴。我们必须为每个gtm标记添加checkProtocolTask : false
,以便从中发送跟踪
谷歌浏览器扩展程序。
将checkProtocolTask : false
添加到要设置的字段
向下滚动到要设置的字段,然后添加一个新字段:
Field Name: checkProtocolTask
Value: false
通常,Google Analytics要求GA的请求来自HTTP或HTTPS。如果请求来自其他任何地方,则该过程将被取消。通过将名为checkProtocolTask的任务设置为false,我们可以阻止此检查发生,因为扩展使用自定义chrome-extension://协议。
截图:
如果他们面临同样的问题,发布此内容以便其他人发现此答案会有所帮助。谢谢!